您的位置:首页 > 编程语言

在DataList中使用PagedDataSource类分页示例(代码)

2007-04-12 11:14 911 查看
<%@ Import Namespace="System.Data" %>
<%@ Import Namespace="System.Data.OleDb" %>
<script language="VB" runat="server">
Sub Page_Load(Sender As Object, E As EventArgs)
If Not Page.IsPostBack Then
Call myDataBind()
End If
End Sub

'该过程用来绑定数据
Sub myDataBind()
'首先建立DataSet对象,注意这里读取了全部数据
Dim conn As New OleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & Server.Mappath("temp.mdb")) '建立Connection对象
Dim adp As New OleDbDataAdapter("Select * From picture", conn) '建立DataAdapter对象
Dim ds As New DataSet() '建立DataSet对象
adp.Fill(ds, "picture") '填充DataSet对象

'然后建立PagedDataSource对象
Dim pgds As New PagedDataSource()
pgds.DataSource=ds.Tables("picture").DefaultView '设置pgds的数据源
pgds.AllowPaging=True '允许分页
pgds.PageSize=9 '每页显示9条记录
pgds.CurrentPageIndex=CInt(lblPageIndex.Text) '设置当前显示数据页,从隐藏标签中读取
lblPageCount.Text=pgds.PageCount '将总页数保存到隐藏标签中

'将PagedDataSource对象绑定到DataList控件
myDataList.DataSource=pgds '指定数据源为PagedDataSource对象
myDataList.DataBind() '执行绑定

'显示当前页和总页码
lblPage.Text = (pgds.CurrentPageIndex+1) & "/" & pgds.PageCount
End Sub

'客户单击页码LinkButton触发该事件
Sub lbtn_Click(Sender As Object, E As EventArgs)
'下面首先从隐藏标签中读取原来显示的页码和总页数
Dim intPageIndex As Integer=CInt(lblPageIndex.Text) '读取原来显示第几页
Dim intPageCount As Integer=CInt(lblPageCount.Text) '读取总页数
'下面根据单击按钮设定新的显示页码
Dim arg As String=Sender.CommandName.ToString
Select Case arg
Case "First"
intPageIndex = 0
Case "Prev"
If intPageIndex>0 Then
intPageIndex -=1
End If
Case "Next"
If intPageIndex<intPageCount-1 Then
intPageIndex +=1
End If
Case "Last"
intPageIndex = intPageCount-1
End Select
'下面将新的显示页码保存到隐藏标签中
lblPageIndex.Text=intPageIndex
'下面调用数据,重新绑定页面
Call myDataBind()
End Sub

'当客户填写页码并单击GO按钮时执行该过程
Sub btnPage_Click(Sender As Object, E As EventArgs)
'下面首先从隐藏标签中读取总页数
Dim intPageCount As Integer=CInt(lblPageCount.Text) '读取总页数
'下面获取客户填写的页码,并处理使其符合要求
Dim intPageIndex As Integer = CInt(txtPage.Text)
If intPageIndex<1 Then
intPageIndex=0 '如果客户填写了小于1的页码,则显示首页
Elseif intPageIndex > intPageCount Then
intPageIndex = intPageCount-1 '如果填写了大于实际页面的数字,则显示末页
Else
intPageIndex = intPageIndex-1 '因为索引从0开始,所以减1
End If
txtPage.Text="" '清空文本框
'下面将要显示的页码保存到隐藏标签中
lblPageIndex.Text = intPageIndex
'下面重新绑定数据
Call myDataBind()
End Sub
</script>

<html>
<body>
<h3 align="center">在DataList中使用PagedDataSource类分页示例</h3>
<form runat="server">
<asp:DataList id="myDataList" width="100%" RepeatDirection="Horizontal" RepeatColumns="3" runat="server" >
<HeaderTemplate>
<hr>
</HeaderTemplate>
<ItemTemplate>
<center>
<b><%# Container.DataItem("title") %> </b>
<br>
<a href='<%# "photo/" & Container.DataItem("filename") %>' target="_blank">
<img src='<%# "photo/" & Container.DataItem("filename") %>' width="150" height="100">
</a>
</center>
</ItemTemplate>
<footerTemplate>
<hr>
</footerTemplate>
</asp:DataList>
<p align="right">
<asp:Label id="lblPage" runat="server"/>
<asp:LinkButton id="lbtnFirst" Text="首页" CommandName="First" onClick="lbtn_Click" runat="server"/>
<asp:LinkButton id="lbtnPrev" Text="上一页" CommandName="Prev" onClick="lbtn_Click" runat="server"/>
<asp:LinkButton id="lbtnNext" Text="下一页" CommandName="Next" onClick="lbtn_Click" runat="server"/>
<asp:LinkButton id="lbtnLast" Text="尾页" CommandName="Last" onClick="lbtn_Click" runat="server"/>
<asp:TextBox id="txtPage" Columns="2" runat="server"/>
<asp:Button id="btnPage" onClick="btnPage_Click" Text="GO" runat="server"/>
<asp:Label id="lblPageIndex" Text="0" Visible="False" runat="server"/>
<asp:Label id="lblPageCount" Visible="False" runat="server"/>
</form>
</body>
</html>
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: