ASP.NET中实现数据分页的几种方法(2)

来源:网络(转载) 作者:庄新妍 周洪翠 发表于:2011-08-16 14:05  点击:
【关健词】ASP.NET;WEB数据库;DataGrid;Datali
整个页面的运行效果见图1。 3 使用DataList控件进行自定义分页 DataGrid控件只能以表格的形式来显示数据,但是DataList控件可以以更自由的方式显示数据,比如可以在一行显示多条记录。不过DataList控件默认是不支持

  整个页面的运行效果见图1。
  3 使用DataList控件进行自定义分页
  DataGrid控件只能以表格的形式来显示数据,但是DataList控件可以以更自由的方式显示数据,比如可以在一行显示多条记录。不过DataList控件默认是不支持分页显示的,也没有自带的分页导航栏,所以实现的方法会更复杂一点。这时需要我们自己自己计算记录总数和总的页数,编码实现页码导航栏,确定DataList控件要显示的页码。导航栏就是一些普通的HTML标记实现的链接到本网页的超级链接,单击这些超链接就会重新打开本页面,并将页码参数传递过去。软后根据要显示的当前页页码计算出当前页第一条记录的索引。最后使用OleDbDataAdapter对象的Fill(DataSet对象名,开始记录索引,每页最多允许记录数, "表名")方法来进行填充。具体实现代码如下。
  Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
  If Page.IsPostBack = False Then
  Session("PageSize") = 4 ‘确定每页显示的记录个数。
  ‘根据记录总数和每页显示的记录个数计算总页数。
  Session("PageCount") = Ceiling(CountTotal() / Session("PageSize"))
  If Session("CurrentPageIndex") Is Nothing Then
  Session("CurrentPageIndex") = 0
  Else
  Session("CurrentPageIndex") = Me.Request.QueryString("PageIndex") - 1
  End If
  Call MyDataBind()
  Call myViewPage()
  End If
  End Sub
  Sub MyDataBind()
  Dim conn As New OleDbConnection("provider=microsoft.jet.oledb.4.0;data source=" & Server.MapPath("教材购销系统.mdb"))
  Dim cmd As New OleDbCommand("select * from 教材一览表 order by 书名", conn)
  Dim ds As New DataSet
  Dim daap As New OleDbDataAdapter(cmd)
  ‘计算第一条记录的索引,按照每页的记录数填充到表"教材一览表"中去。
  daap.Fill(ds, Session("CurrentPageIndex") * Session("PageSize"), Session("PageSize"), "教材一览表")
  MyDataList.DataSource = ds.Tables("教材一览表") ''
  MyDataList.DataBind()
  End Sub
  Function CountTotal()‘计算记录总数的函数。
  Dim conn As New OleDbConnection("provider=microsoft.jet.oledb.4.0;data source=" & Server.MapPath("教材购销系统.mdb"))
  Dim cmd As New OleDbCommand("select count(书号) from 教材一览表", conn)
  conn.Open()
  CountTotal = cmd.ExecuteScalar
  conn.Close()
  End Function
  Sub myViewPage() ‘页码导航栏实现代码。
  '首先显示当前页和总页码
  lblPage.Text = "当前显示第" & (Session("CurrentPageIndex") + 1) & "页 / 共" & Session("PageCount") & "页"
  '下面计算当前要显示的最小页码和最大页码
  Dim intMin, intMax, I As Integer
  intMin = (Int(Session("CurrentPageIndex") / 10)) * 10 + 1
  intMax = (Int(Session("CurrentPageIndex") / 10)) * 10 + 10
  If intMax > Session("PageCount") Then intMax = Session("PageCount")
  '下面添加首页的超链接
  lblPage.Text &= " 首页 "
  '下面添加通往前10页的链接
  If intMin - 1 > 1 Then
  lblPage.Text &= "前10页 "
  End If
  '下面添加当前10页的链接
  For I = intMin To intMax
  lblPage.Text &= "" & I & " "
  Next
  '下面输出通往后10页的链接
  If intMax + 1 < Session("PageCount") Then
  lblPage.Text &= "后10页 "
  End If
  '下面输出通往尾页的链接
  lblPage.Text &= "尾页 "
  End Sub
 

(责任编辑:南粤论文中心)转贴于南粤论文中心: http://www.nylw.net(南粤论文中心__代写代发论文_毕业论文带写_广州职称论文代发_广州论文网)
顶一下
(0)
0%
踩一下
(0)
0%


版权声明:因本文均来自于网络,如果有版权方面侵犯,请及时联系本站删除.