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
<titleDataRepeater</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