DataList和DataRepeater分頁
2024-07-21 02:23:42
供稿:網友
注冊會員,創建你的web開發資料庫,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>