Repeater控件分页例子
作者:孟宪会 发布日期:2003-09-11 22:11:43

Repeater和DataList控件提供了一个快速、灵活的表现数据的方式,但是,它们没有内建的分页功能;DataGrid控件提供了内建的分页功能,但它的结构比较复杂。下面就用PagedDataSource类实现Repeater和DataList的分页。 PagedDataSource封装了DataGrid的分页属性,我们可以象DataGrid那样进行分页。代码如下:

ASPX 代码(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>&nbsp;<asp:HyperLink id="lnkPrev" runat="server">上一页</asp:HyperLink>
  
<asp:HyperLink id="lnkNext" runat="server">下一页</asp:HyperLink>&nbsp;
</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>

ASPX 代码(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>&nbsp;<asp:HyperLink id="lnkPrev" runat="server">上一页</asp:HyperLink>
  
<asp:HyperLink id="lnkNext" runat="server">下一页</asp:HyperLink>&nbsp;
</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>

原文地址:http://dotnet.aspx.cc/article/d5c6e29d-99f5-44e8-4fed-75af892a53cb/print.aspx
© 版权所有 【孟宪会之精彩世界】TM 2012