Repeater和DataList控件提供了一个快速、灵活的表现数据的方式,但是,它们没有内建的分页功能;DataGrid控件提供了内建的分页功能,但它的结构比较复杂。下面就用PagedDataSource类实现Repeater和DataList的分页。 PagedDataSource封装了DataGrid的分页属性,我们可以象DataGrid那样进行分页。代码如下:
C#版本
- <%@ 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>
VB.NET版本
- <%@ Page Language="VB" %>
- <%@ import namespace="System.Data" %>
- <%@ import namespace="System.Data.OleDb" %>
- <script language="VB" runat="server">
- Public Sub Page_Load(ByVal src As Object, ByVal e As EventArgs)
- Dim objConn As OleDbConnection = New OleDbConnection ("Provider=Microsoft.Jet.OLEDB.4.0; Data Source=" + Server.MapPath("../aspxWeb.mdb"))
- Dim objCommand As OleDbDataAdapter = New OleDbDataAdapter ("select * from Document", objConn)
- Dim ds As DataSet = New DataSet ()
- objCommand.Fill(ds)
- Dim objPds As PagedDataSource = New PagedDataSource ()
- objPds.DataSource = ds.Tables(0).DefaultView
- objPds.AllowPaging = True
- objPds.PageSize = 5
- Dim CurPage As Integer
- If Not (Request.QueryString("Page") Is Nothing) Then
- CurPage = Convert.ToInt32(Request.QueryString("Page"))
- Else
- CurPage = 1
- End If
- objPds.CurrentPageIndex = CurPage - 1
- lblCurrentPage.Text = "当前页:" + CurPage.ToString()
- If Not objPds.IsFirstPage Then
- lnkPrev.NavigateUrl = Request.CurrentExecutionFilePath + "?Page=" + Convert.ToString(CurPage - 1)
- End If
- If Not objPds.IsLastPage Then
- lnkNext.NavigateUrl = Request.CurrentExecutionFilePath + "?Page=" + Convert.ToString(CurPage + 1)
- End If
- Repeater1.DataSource = objPds
- Repeater1.DataBind()
- End Sub
- </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>