DataList本身不具有分页功能,所以需要用户自定义分页。
在网上搜索了一下“关于DataList分页”的一些代码,自己也写了一些,大家分享!
1. 利用PagedDataSource实现分页
前台代码:
页数:
&
nbsp;
<
asp:Label ID
=
"
LblPageCount
"
runat
=
"
server
"
Font
-
Bold
=
"
True
"
></
asp:Label
>&
nbsp;页
& nbsp;
< asp:Label ID = " LblRecord " runat = " server " Font - Bold = " True " ></ asp:Label >& nbsp;个 / 页
& nbsp;共 & nbsp; < asp:Label ID = " LblRecordCount " runat = " server " Font - Bold = " True " ></ asp:Label >& nbsp;条
< asp:LinkButton ID = " LblFristPage " runat = " server " OnClick = " LblFristPage_Click " > 首页 </ asp:LinkButton >
< asp:LinkButton ID = " LblNextPage " runat = " server " OnClick = " LblNextPage_Click " > 下一页 </ asp:LinkButton >
< asp:LinkButton ID = " LblPrivPage " runat = " server " OnClick = " LblPrivPage_Click " > 上一页 </ asp:LinkButton >
< asp:LinkButton ID = " LblEndPage " runat = " server " OnClick = " LblEndPage_Click " > 末页 </ asp:LinkButton >
& nbsp;
< asp:Label ID = " LblRecord " runat = " server " Font - Bold = " True " ></ asp:Label >& nbsp;个 / 页
& nbsp;共 & nbsp; < asp:Label ID = " LblRecordCount " runat = " server " Font - Bold = " True " ></ asp:Label >& nbsp;条
< asp:LinkButton ID = " LblFristPage " runat = " server " OnClick = " LblFristPage_Click " > 首页 </ asp:LinkButton >
< asp:LinkButton ID = " LblNextPage " runat = " server " OnClick = " LblNextPage_Click " > 下一页 </ asp:LinkButton >
< asp:LinkButton ID = " LblPrivPage " runat = " server " OnClick = " LblPrivPage_Click " > 上一页 </ asp:LinkButton >
< asp:LinkButton ID = " LblEndPage " runat = " server " OnClick = " LblEndPage_Click " > 末页 </ asp:LinkButton >
后台代码:
PagedDataSource pds
=
new
PagedDataSource();
pds.DataSource = cndt.DefaultView;
pds.CurrentPageIndex = CurrentPage - 1 ;
pds.PageSize = 15 ;
pds.AllowPaging = true ;
PageCount = cndt.Rows.Count / 15 + 1 ;
this .LblPageCount.Text = CurrentPage + " / " + PageCount.ToString();
this .LblRecord.Text = " 15 " ;
this .LblRecordCount.Text = cndt.Rows.Count.ToString();
this .CompanyCulture.DataSource = pds;
this .CompanyCulture.DataKeyField = " ID " ;
this .CompanyCulture.DataBind();
GetPage();
}
private void GetPage()
... {
if (CurrentPage == 1)
...{
LblFristPage.Enabled = false;
LblPrivPage.Enabled = false;
}
else
...{
LblPrivPage.Enabled = true;
LblFristPage.Enabled = true;
}
if (CurrentPage == PageCount)
...{
LblEndPage.Enabled = false;
LblNextPage.Enabled = false;
}
else
...{
LblEndPage.Enabled = true;
LblNextPage.Enabled = true;
}
}
pds.DataSource = cndt.DefaultView;
pds.CurrentPageIndex = CurrentPage - 1 ;
pds.PageSize = 15 ;
pds.AllowPaging = true ;
PageCount = cndt.Rows.Count / 15 + 1 ;
this .LblPageCount.Text = CurrentPage + " / " + PageCount.ToString();
this .LblRecord.Text = " 15 " ;
this .LblRecordCount.Text = cndt.Rows.Count.ToString();
this .CompanyCulture.DataSource = pds;
this .CompanyCulture.DataKeyField = " ID " ;
this .CompanyCulture.DataBind();
GetPage();
}
private void GetPage()
... {
if (CurrentPage == 1)
...{
LblFristPage.Enabled = false;
LblPrivPage.Enabled = false;
}
else
...{
LblPrivPage.Enabled = true;
LblFristPage.Enabled = true;
}
if (CurrentPage == PageCount)
...{
LblEndPage.Enabled = false;
LblNextPage.Enabled = false;
}
else
...{
LblEndPage.Enabled = true;
LblNextPage.Enabled = true;
}
}
2. 利用DataSet实现分页
前台代码:
<
asp:LinkButton ID
=
"
LbtnFirst
"
runat
=
"
server
"
CommandArgument
=
"
first
"
CommandName
=
"
Pager
"
OnCommand = " PageClick " > 首页 </ asp:LinkButton >
< asp:LinkButton ID = " LbtnNext " runat = " server " CommandArgument = " next " CommandName = " Pager "
OnCommand = " PageClick " > 下一页 </ asp:LinkButton >
< asp:LinkButton ID = " LbtnPrev " runat = " server " CommandArgument = " prev " CommandName = " Pager "
OnCommand = " PageClick " > 上一页 </ asp:LinkButton >
< asp:LinkButton ID = " LbtnEnd " runat = " server " CommandArgument = " end " CommandName = " Pager "
OnCommand = " PageClick " > 末页 </ asp:LinkButton >
& nbsp; & nbsp;
< asp:Label ID = " LblPageCount " runat = " server " Text = " 页数 " ></ asp:Label >& nbsp;
< asp:Label ID = " LblPageSize " runat = " server " Text = " 每页记录数 " ></ asp:Label >& nbsp;
< asp:Label ID = " LblRecordCount " runat = " server " Text = " Label " ></ asp:Label >& nbsp;
< asp:Label ID = " LblCurrentPage " runat = " server " Text = " 当前页数 " ></ asp:Label >& nbsp;
OnCommand = " PageClick " > 首页 </ asp:LinkButton >
< asp:LinkButton ID = " LbtnNext " runat = " server " CommandArgument = " next " CommandName = " Pager "
OnCommand = " PageClick " > 下一页 </ asp:LinkButton >
< asp:LinkButton ID = " LbtnPrev " runat = " server " CommandArgument = " prev " CommandName = " Pager "
OnCommand = " PageClick " > 上一页 </ asp:LinkButton >
< asp:LinkButton ID = " LbtnEnd " runat = " server " CommandArgument = " end " CommandName = " Pager "
OnCommand = " PageClick " > 末页 </ asp:LinkButton >
& nbsp; & nbsp;
< asp:Label ID = " LblPageCount " runat = " server " Text = " 页数 " ></ asp:Label >& nbsp;
< asp:Label ID = " LblPageSize " runat = " server " Text = " 每页记录数 " ></ asp:Label >& nbsp;
< asp:Label ID = " LblRecordCount " runat = " server " Text = " Label " ></ asp:Label >& nbsp;
< asp:Label ID = " LblCurrentPage " runat = " server " Text = " 当前页数 " ></ asp:Label >& nbsp;
后台代码:
private
void
GetRecordNum()
//
获取记录总个数
... {
DataSet dt = SearchHelp.SearchHelp.GetDataSet(sqlstr);
RecordCount = dt.Tables[0].DefaultView.Count;
}
private void BindGrid() // 根据页码获取数据
... {
PageCount = RecordCount / PageSize;
if (RecordCount % PageSize != 0)
...{
PageCount++;
}
PageIndex = PageSize * CurrentPage;
this.LblCurrentPage.Text = "当前第:" + (CurrentPage + 1).ToString() + "页";
this.LblRecordCount.Text = "共有:" + RecordCount.ToString() + "条记录";
this.LblPageSize.Text = "每页 " + PageSize.ToString() + "条记录";
this.LblPageCount.Text = "共有:" + PageCount.ToString() + "页";
DataSet dt = SearchHelp.SearchHelp.GetDataSet(sqlstr, PageIndex, PageSize);//查询语句sqlstr,获取记录的起始索引PageIndex,获取记录的个数PageSize
this.CarsList.DataSource = dt.Tables[0].DefaultView;
this.CarsList.DataBind();
protected void PageClick(object sender, CommandEventArgs e)
...{
string age = e.CommandArgument.ToString();
switch (age)
...{
case "next":
if (CurrentPage < PageCount - 1)
...{
CurrentPage++;
}
break;
case "prev":
if (CurrentPage > 0)
...{
CurrentPage--;
}
break;
case "first":
...{
CurrentPage = 0;
}
break;
case "end":
...{
CurrentPage = PageCount - 1;
}
break;
}
BindGrid();
}
... {
DataSet dt = SearchHelp.SearchHelp.GetDataSet(sqlstr);
RecordCount = dt.Tables[0].DefaultView.Count;
}
private void BindGrid() // 根据页码获取数据
... {
PageCount = RecordCount / PageSize;
if (RecordCount % PageSize != 0)
...{
PageCount++;
}
PageIndex = PageSize * CurrentPage;
this.LblCurrentPage.Text = "当前第:" + (CurrentPage + 1).ToString() + "页";
this.LblRecordCount.Text = "共有:" + RecordCount.ToString() + "条记录";
this.LblPageSize.Text = "每页 " + PageSize.ToString() + "条记录";
this.LblPageCount.Text = "共有:" + PageCount.ToString() + "页";
DataSet dt = SearchHelp.SearchHelp.GetDataSet(sqlstr, PageIndex, PageSize);//查询语句sqlstr,获取记录的起始索引PageIndex,获取记录的个数PageSize
this.CarsList.DataSource = dt.Tables[0].DefaultView;
this.CarsList.DataBind();
protected void PageClick(object sender, CommandEventArgs e)
...{
string age = e.CommandArgument.ToString();
switch (age)
...{
case "next":
if (CurrentPage < PageCount - 1)
...{
CurrentPage++;
}
break;
case "prev":
if (CurrentPage > 0)
...{
CurrentPage--;
}
break;
case "first":
...{
CurrentPage = 0;
}
break;
case "end":
...{
CurrentPage = PageCount - 1;
}
break;
}
BindGrid();
}