DataList分页
Repeater和DataList控件提供了一个快速、灵活的表现数据的方式,但是,它们没有内建的分页功能;DataGrid控件提供了内建的分页功能,但它的结构比较复杂。下面就用PagedDataSource类实现Repeater和DataList的分页。 PagedDataSource封装了DataGrid的分页属性,我们可以象DataGrid那样进行分页。代码如下:
<%@ Page Language=C# %>
<%@ import namespace=System.Data %>
<%@ import namespace=System.Data.OleDb %>
<script language=C# runat=server>
public void Page_Load(Object src,EventArgs e) {
OleDbConnection objConn=new OleDbConnection(Provider=Microsoft.Jet.OLEDB.4.0; Data Source= +
Server.MapPath(../aspxWeb.mdb));
OleDbDataAdapter objCommand=new OleDbDataAdapter(select * from Document,objConn);
DataSet ds=new DataSet();
objCommand.Fill(ds);
PagedDataSource objPds = new PagedDataSource();
objPds.DataSource = ds.Tables[0].DefaultView;
objPds.AllowPaging = true;
objPds.PageSize = 5;
int CurPage;
if (Request.QueryString[Page] != null)
CurPage=Convert.ToInt32(Request.QueryString[Page]);
else
CurPage=1;
objPds.CurrentPageIndex = CurPage-1;
lblCurrentPage.Text = 当前页: + CurPage.ToString();
if (!objPds.IsFirstPage)
lnkPrev.NavigateUrl=Request.CurrentExecutionFilePath + ?Page= + Convert.ToString(CurPage-1);
if (!objPds.IsLastPage)
lnkNext.NavigateUrl=Request.CurrentExecutionFilePath+ ?Page= + Convert.ToString(CurPage+1);
Repeater1.DataSource=objPds;
Repeater1.DataBind();
}
</script>
<html>
<head>
<title>Repeater控件分页的例子</title>
<meta http-equiv=Content-Type content=text/html; charset=gb2312>
<style>
P,TD,DIV,SPAN {font-size:9pt}
</style>
</head>
<body>
<form name=form1 method=POST runat=server>
<div style=padding:5px;background-color:#dedede>
<asp:label ID=lblCurrentPage runat=server></asp:label></td>
<td> <asp:HyperLink id=lnkPrev runat=server>上一页</asp:HyperLink>
<asp:HyperLink id=lnkNext runat=server>下一页</asp:HyperLink>
</div>
<hr size=1 color=#000099/>
<asp:Repeater ID=Repeater1 runat=server>
<Itemtemplate>
<div style=padding:5px;background-color:#dedede>
<%# DataBinder.Eval(Container.DataItem, Title) %>
</div>
</Itemtemplate>
</asp:Repeater>
</form>
</body>
</html>