this is a extra element for clear the floated element
DataList和DataRepeater分页
  • 12/31
  • 2008
优化性能 | Windows 1644 次查看
  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 DataTable

  Dim dr As DataRow

  Dim 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 50

  dr = dt.NewRow()

  dr(0) = i

  dr(1) = "Item " + i.ToString()

  dr(2) = DateTime.Now.ToShortTimeString

  If (i Mod 2 <> 0) Then

  dr(3) = True

  Else

  dr(3) = False

  End 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>