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 >& 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 >
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 >
查看例子
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 >
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 >