DataList和DataRepeater分页

<script type="text/javascript"> </script> <script type="text/javascript" src="http://pagead2.googlesyndication.com/pagead/show_ads.js"> </script>
<script type="text/javascript"> </script><script type="text/javascript" src="http://pagead2.googlesyndication.com/pagead/show_ads.js"> </script>

ASP.NET中的DataList和DataRepeater提供了简单快速的方法來显示,其间,我们可以使用<ItemTemplate>更是使我们能随心所欲的控制数据的排放样式!.可惜的是它们不像Datagrid那样,有内置的分页功能。如何解决呢?

其实我们可以【PagedDataSource】 类来解决分页的问题。PagedDataSource类的属性:

DataSource -数据源

AllowPaging - true 是否允许分页.PageSize - 每页项目数量PageCount - 总页数

CurrentPageIndex - 当前所在的页索引代码如下:

<%@ Page Language="VB" %><%@ import Namespace="System.Data" %><script runat="server">     Sub Page_Load(ByVal Sender As Object, ByVal e As EventArgs)

        Dim Pgds As PagedDataSource = New PagedDataSource        Pgds.DataSource = CreateDataSource().DefaultView        Pgds.AllowPaging = True        Pgds.PageSize = 6        lblTotalPage.Text = Pgds.PageCount.ToString()

        Dim CurrentPage As Integer        If Not Request.QueryString("Page") Is Nothing Then            CurrentPage = Convert.ToInt32(Request.QueryString("Page"))        Else            CurrentPage = 1        End If

        Pgds.CurrentPageIndex = CurrentPage - 1        lblCurrentPage.Text = CurrentPage.ToString()

        If Not Pgds.IsFirstPage Then            lnkPrev.NavigateUrl = Request.CurrentExecutionFilePath + "?Page=" + Convert.ToString(CurrentPage - 1)        End If

        If Not Pgds.IsLastPage Then            lnkNext.NavigateUrl = Request.CurrentExecutionFilePath + "?Page=" + Convert.ToString(CurrentPage + 1)        End If

        Repeater1.DataSource = Pgds        Repeater1.DataBind()

    End Sub

Function CreateDataSource() As Datatable

Dim dt As DataTableDim dr As DataRowDim i As Integer

        dt = New DataTable        dt.Columns.Add(New DataColumn("IntegerValue", GetType(Integer)))        dt.Columns.Add(New DataColumn("StringValue", GetType(String)))        dt.Columns.Add(New DataColumn("DateTimeValue", GetType(DateTime)))        dt.Columns.Add(New DataColumn("BoolValue", GetType(Boolean)))

For i = 0 To 50dr = dt.NewRow()dr(0) = idr(1) = "Item " + i.ToString()dr(2) = DateTime.Now.ToShortTimeStringIf (i Mod 2 <> 0) Thendr(3) = TrueElsedr(3) = FalseEnd If

dt.Rows.Add(dr)Next

Return dt

End Function

</script>

<html><head><title>DataRepeater</title><style type=text/css>

BODY {FONT: 10px Verdana, Arial, Helvetica, "sans serif"; COLOR: #000000; }.txt {FONT-SIZE: 12px}</style></head><body><form id="Form1" name=form1 method=post runat="server"><table class=txt width="100%" border=0><tbody><tr><td>

<asp:hyperlink id=lnkPrev runat="server">上页</asp:hyperlink>  <asp:hyperlink id=lnkNext runat="server">下页</asp:hyperlink>第<asp:label id=lblCurrentPage runat="server"></asp:label> 页 共 <asp:label id=lblTotalPage runat="server"></asp:label>页

</td></tr></tbody></table><asp:repeater id=Repeater1 runat="server">

<ItemTemplate><hr align="left" width="60%" size="1"><table class=txt width="100%" border="0"><tr><td>Order Date: <%# DataBinder.Eval(Container.DataItem, "DateTimeValue", "{0:d}") %></td><tr><td>Quantity: <%# DataBinder.Eval(Container.DataItem, "IntegerValue", "{0:N2}") %></td><tr><td>Item: <%# DataBinder.Eval(Container.DataItem, "StringValue") %></td><tr><td>Order Date: <asp:checkbox id=chk1 checked='<%# DataBinder.Eval(Container.DataItem, "BoolValue") %>' runat="server"/></td></tr></table></ItemTemplate>

</asp:repeater><hr hight="1">

</form>

</body>

</html>

<script type="text/javascript"> </script> <script type="text/javascript" src="http://pagead2.googlesyndication.com/pagead/show_ads.js"> </script>
<script type="text/javascript"> </script><script type="text/javascript" src="http://pagead2.googlesyndication.com/pagead/show_ads.js"> </script>
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值