http://dotnet.aspx.cc/ShowDetail.aspx?id=D5C6E29D-99F5-44E8-4FED-75AF892A53CB(转)
Repeater和DataList控件提供了一个快速、灵活的表现数据的方式,但是,它们没有内建的分页功能;DataGrid控件提供了内建的分页功能,但它的结构比较复杂。下面就用PagedDataSource类实现Repeater和DataList的分页。 PagedDataSource封装了DataGrid的分页属性,我们可以象DataGrid那样进行分页。代码如下:
C#版本
&lt;%@ Page Language=&quot;C#&quot; %&gt;<br />&lt;%@ import namespace=&quot;System.Data&quot; %&gt;<br />&lt;%@ import namespace=&quot;System.Data.OleDb&quot; %&gt;<br />&lt;script language=&quot;C#&quot; runat=&quot;server&quot;&gt;<br />public void Page_Load(Object src,EventArgs e) {<br /> OleDbConnection objConn=new OleDbConnection(&quot;Provider=Microsoft.Jet.OLEDB.4.0; Data Source=&quot; + <br /> Server.MapPath(&quot;../aspxWeb.mdb&quot;));<br /> OleDbDataAdapter objCommand=new OleDbDataAdapter(&quot;select * from Document&quot;,objConn);<br /> DataSet ds=new DataSet();<br /> objCommand.Fill(ds);<br /><br /> PagedDataSource objPds = new PagedDataSource();<br /> objPds.DataSource = ds.Tables[0].DefaultView;<br /> objPds.AllowPaging = true;<br /> objPds.PageSize = 5;<br /> int CurPage;<br /> if (Request.QueryString[&quot;Page&quot;] != null)<br /> CurPage=Convert.ToInt32(Request.QueryString[&quot;Page&quot;]);<br /> else<br /> CurPage=1;<br /><br /> objPds.CurrentPageIndex = CurPage-1;<br /> lblCurrentPage.Text = &quot;当前页:&quot; + CurPage.ToString();<br /><br /> if (!objPds.IsFirstPage)<br /> lnkPrev.NavigateUrl=Request.CurrentExecutionFilePath + &quot;?Page=&quot; + Convert.ToString(CurPage-1);<br /><br /> if (!objPds.IsLastPage)<br /> lnkNext.NavigateUrl=Request.CurrentExecutionFilePath+ &quot;?Page=&quot; + Convert.ToString(CurPage+1);<br /><br /> Repeater1.DataSource=objPds;<br /> Repeater1.DataBind();<br />}<br />&lt;/script&gt;<br />&lt;html&gt;<br />&lt;head&gt;<br />&lt;title&gt;Repeater控件分页的例子&lt;/title&gt;<br />&lt;meta http-equiv=&quot;Content-Type&quot; content=&quot;text/html; charset=gb2312&quot;&gt;<br />&lt;style&gt;<br /> P,TD,DIV,SPAN {font-size:9pt}<br />&lt;/style&gt;<br />&lt;/head&gt;<br />&lt;body&gt;<br />&lt;form name=&quot;form1&quot; method=&quot;POST&quot; runat=&quot;server&quot;&gt;<br />&lt;div style=&quot;padding:5px;background-color:#dedede&quot;&gt;<br />&lt;asp:label ID=&quot;lblCurrentPage&quot; runat=&quot;server&quot;&gt;&lt;/asp:label&gt;&lt;/td&gt;<br /> &lt;td&gt;&amp;nbsp;&lt;asp:HyperLink id=&quot;lnkPrev&quot; runat=&quot;server&quot;&gt;上一页&lt;/asp:HyperLink&gt;<br /> &lt;asp:HyperLink id=&quot;lnkNext&quot; runat=&quot;server&quot;&gt;下一页&lt;/asp:HyperLink&gt;&amp;nbsp;<br />&lt;/div&gt;<br />&lt;hr size=&quot;1&quot; color=&quot;#000099&quot;/&gt;<br />&lt;asp:Repeater ID=&quot;Repeater1&quot; runat=&quot;server&quot;&gt;<br />&lt;Itemtemplate&gt;<br />&lt;div style=&quot;padding:5px;background-color:#dedede&quot;&gt;<br />&lt;%# DataBinder.Eval(Container.DataItem, &quot;Title&quot;) %&gt;<br />&lt;/div&gt;<br />&lt;/Itemtemplate&gt;<br />&lt;/asp:Repeater&gt;<br />&lt;/form&gt;<br />&lt;/body&gt;<br />&lt;/html&gt;<br />
VB.NET版本
&lt;%@ Page Language=&quot;VB&quot; %&gt;<br />&lt;%@ import namespace=&quot;System.Data&quot; %&gt;<br />&lt;%@ import namespace=&quot;System.Data.OleDb&quot; %&gt;<br />&lt;script language=&quot;VB&quot; runat=&quot;server&quot;&gt;<br />Public Sub Page_Load(ByVal src As Object, ByVal e As EventArgs) <br /> Dim objConn As OleDbConnection = New OleDbConnection (&quot;Provider=Microsoft.Jet.OLEDB.4.0; Data Source=&quot; + Server.MapPath(&quot;../aspxWeb.mdb&quot;)) <br /> Dim objCommand As OleDbDataAdapter = New OleDbDataAdapter (&quot;select * from Document&quot;, objConn) <br /> Dim ds As DataSet = New DataSet () <br /> objCommand.Fill(ds) <br /> Dim objPds As PagedDataSource = New PagedDataSource () <br /> objPds.DataSource = ds.Tables(0).DefaultView <br /> objPds.AllowPaging = True <br /> objPds.PageSize = 5 <br /> Dim CurPage As Integer <br /> If Not (Request.QueryString(&quot;Page&quot;) Is Nothing) Then <br /> CurPage = Convert.ToInt32(Request.QueryString(&quot;Page&quot;)) <br /> Else <br /> CurPage = 1 <br /> End If <br /> objPds.CurrentPageIndex = CurPage - 1 <br /> lblCurrentPage.Text = &quot;当前页:&quot; + CurPage.ToString() <br /> If Not objPds.IsFirstPage Then <br /> lnkPrev.NavigateUrl = Request.CurrentExecutionFilePath + &quot;?Page=&quot; + Convert.ToString(CurPage - 1) <br /> End If <br /> If Not objPds.IsLastPage Then <br /> lnkNext.NavigateUrl = Request.CurrentExecutionFilePath + &quot;?Page=&quot; + Convert.ToString(CurPage + 1) <br /> End If <br /> Repeater1.DataSource = objPds <br /> Repeater1.DataBind() <br />End Sub<br />&lt;/script&gt;<br />&lt;html&gt;<br />&lt;head&gt;<br />&lt;title&gt;Repeater控件分页的例子&lt;/title&gt;<br />&lt;meta http-equiv=&quot;Content-Type&quot; content=&quot;text/html; charset=gb2312&quot;&gt;<br />&lt;style&gt;<br /> P,TD,DIV,SPAN {font-size:9pt}<br />&lt;/style&gt;<br />&lt;/head&gt;<br />&lt;body&gt;<br />&lt;form name=&quot;form1&quot; method=&quot;POST&quot; runat=&quot;server&quot;&gt;<br />&lt;div style=&quot;padding:5px;background-color:#dedede&quot;&gt;<br />&lt;asp:label ID=&quot;lblCurrentPage&quot; runat=&quot;server&quot;&gt;&lt;/asp:label&gt;&lt;/td&gt;<br /> &lt;td&gt;&amp;nbsp;&lt;asp:HyperLink id=&quot;lnkPrev&quot; runat=&quot;server&quot;&gt;上一页&lt;/asp:HyperLink&gt;<br /> &lt;asp:HyperLink id=&quot;lnkNext&quot; runat=&quot;server&quot;&gt;下一页&lt;/asp:HyperLink&gt;&amp;nbsp;<br />&lt;/div&gt;<br />&lt;hr size=&quot;1&quot; color=&quot;#000099&quot;/&gt;<br />&lt;asp:Repeater ID=&quot;Repeater1&quot; runat=&quot;server&quot;&gt;<br />&lt;Itemtemplate&gt;<br />&lt;div style=&quot;padding:5px;background-color:#dedede&quot;&gt;<br />&lt;%# DataBinder.Eval(Container.DataItem, &quot;Title&quot;) %&gt;<br />&lt;/div&gt;<br />&lt;/Itemtemplate&gt;<br />&lt;/asp:Repeater&gt;<br />&lt;/form&gt;<br />&lt;/body&gt;<br />&lt;/html&gt;<br />
|
本文介绍如何使用PagedDataSource类为ASP.NET中的Repeater和DataList控件添加分页功能,通过示例展示了C#和VB.NET两种语言的具体实现。
215

被折叠的 条评论
为什么被折叠?



