DataList和DataRepeater分页

ASP.NET中的DataList和DataRepeater提供了简单快速的方法來显示,其间,我们可以使用

 1<itemtemplate>更是使我们能随心所欲的控制数据的排放样式!.可惜的是它们不像Datagrid那样,有内置的分页功能。   
 2  
 3如何解决呢? 
 4
 5其实我们可以【PagedDataSource】 类来解决分页的问题。   
 6  
 7PagedDataSource类的属性: 
 8
 9  
10DataSource -数据源 
11
12AllowPaging - true 是否允许分页.   
13PageSize - 每页项目数量   
14PageCount - 总页数 
15
16CurrentPageIndex - 当前所在的页索引   
17
18
19代码如下: 

@ Page Language="VB"

@ import Namespace="System.Data"

 1<script runat="server">   
 2Sub Page_Load(ByVal Sender As Object, ByVal e As EventArgs) 
 3
 4Dim Pgds As PagedDataSource = New PagedDataSource   
 5Pgds.DataSource = CreateDataSource().DefaultView   
 6Pgds.AllowPaging = True   
 7Pgds.PageSize = 6   
 8lblTotalPage.Text = Pgds.PageCount.ToString() 
 9
10Dim CurrentPage As Integer   
11If Not Request.QueryString("Page") Is Nothing Then   
12CurrentPage = Convert.ToInt32(Request.QueryString("Page"))   
13Else   
14CurrentPage = 1   
15End If 
16
17Pgds.CurrentPageIndex = CurrentPage - 1   
18lblCurrentPage.Text = CurrentPage.ToString() 
19
20If Not Pgds.IsFirstPage Then   
21lnkPrev.NavigateUrl = Request.CurrentExecutionFilePath + "?Page=" + Convert.ToString(CurrentPage - 1)   
22End If 
23
24If Not Pgds.IsLastPage Then   
25lnkNext.NavigateUrl = Request.CurrentExecutionFilePath + "?Page=" + Convert.ToString(CurrentPage + 1)   
26End If 
27
28Repeater1.DataSource = Pgds   
29Repeater1.DataBind() 
30
31End Sub 
32
33Function CreateDataSource() As Datatable 
34
35Dim dt As DataTable   
36Dim dr As DataRow   
37Dim i As Integer 
38
39dt = New DataTable   
40dt.Columns.Add(New DataColumn("IntegerValue", GetType(Integer)))   
41dt.Columns.Add(New DataColumn("StringValue", GetType(String)))   
42dt.Columns.Add(New DataColumn("DateTimeValue", GetType(DateTime)))   
43dt.Columns.Add(New DataColumn("BoolValue", GetType(Boolean))) 
44
45  
46For i = 0 To 50   
47dr = dt.NewRow()   
48dr(0) = i   
49dr(1) = "Item " + i.ToString()   
50dr(2) = DateTime.Now.ToShortTimeString   
51If (i Mod 2 <> 0) Then   
52dr(3) = True   
53Else   
54dr(3) = False   
55End If 
56
57dt.Rows.Add(dr)   
58Next 
59
60Return dt 
61
62End Function 
63
64</script>
65<html><head>
66<title>DataRepeater</title>
67<style type="text/css">
68
69BODY {   
70FONT: 10px Verdana, Arial, Helvetica, "sans serif"; COLOR: #000000;   
71}   
72.txt {   
73FONT-SIZE: 12px   
74}   
75</style>
76</head>
77<body>
78<form id="Form1" method="post" name="form1" runat="server">
79<table border="0" class="txt" width="100%">
80<tbody><tr><td>
81<asp:hyperlink id="lnkPrev" runat="server">上页</asp:hyperlink>
82<asp:hyperlink id="lnkNext" runat="server">下页</asp:hyperlink>第   
83<asp:label id="lblCurrentPage" runat="server"></asp:label> 页 共 <asp:label id="lblTotalPage" runat="server"></asp:label>页 
84
85</td></tr></tbody></table>
86<asp:repeater id="Repeater1" runat="server">
87<itemtemplate>
88<hr align="left" size="1" width="60%"/>
89<table border="0" class="txt" width="100%">
90<tr>
91<td>   
92Order Date: ```
93# DataBinder.Eval(Container.DataItem, "DateTimeValue", "{0:d}") 
Quantity: ``` # DataBinder.Eval(Container.DataItem, "IntegerValue", "{0:N2}") ```Item: ``` # DataBinder.Eval(Container.DataItem, "StringValue") ```Order Date:
```
Published At
Categories with Web编程
Tagged with
comments powered by Disqus