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

来源:网络(转载) 作者:庄新妍 周洪翠 发表于:2011-08-16 14:05  点击:
【关健词】ASP.NET;WEB数据库;DataGrid;Datali
ASP.NET是一种服务器端制作动态WEB页的全新编程手段。该文讨论了在ASP.NET框架下对WEB数据库几种实现分页显示的方法。对利用自带分页功能的数据控件(如:DataGrid)和对于没有自带分页功能的控件(如:DataList)进行分页分别结合实例进行了详细的阐述。

Several Methods of Realizing Data Paging in the ASP.NET
  ZHUANG Xin-yan, ZHOU Hong-cui
  (Hunlunbeier University of Computer Science and Technology Institute, Hailaer 021008, China)
  Abstract: ASP.NET is a brand new programming method that makes dynamic WEB page through the server.This article discusses several methods of realizing page display of WEB database in the ASP.NET framework.It detailed that how to page for using the data control owning paging function (such as: DataGrid) and for not bringing paging control function (such as: DataList)Combined with examples respectively.
  Keywords: ASP.NET; WEB database; DataGrid; Datalist; paging
  随着计算机网络技术的发展和普遍应用,人们的工作和生活越来越离不开网络,当人们在网上查看查询信息时,如果成千上万条记录显示在一个页面,即不方便浏览,显示速度也很慢。另外,如果屏幕显示不下,还要借助于窗口滚动条,显然也很麻烦。但是,若对查询的结果分页显示,效果将截然不同。从用户的角度,这种分页显示的结果看起来整齐简洁;从系统的角度,分页显示的速度比一下子显示整个查询记录来得快,因而可以节省网络带宽,增加系统的反应速度。本文由浅至深讲解几种分页的方法。
  1 使用DataGrid控件自带的默认导航栏进行标准分页
  DataGrid就是一款方便显示数据的控件,将它的DataSource属性与包含数据库记录集的对象绑定就能很容易的显示记录集的数据。而且该控件自带的分页功能,使得实现分页变得非常容易。使用DataGrid控件自带的默认导航栏进行分页显示除了正常的数据绑定之外还必须设置该控件的AllowPaging属性为"True"表示允许分页,然后为了使单击导航栏控件页码时能跳转到特定页,还必须创建一个进行相应的事件处理程序,该事件处理程序为DataGrid控件的PageIndexChanged事件。具体代码如下:
  Protected Sub MydataGrid_PageIndexChanged(source As Object,e As DataGridPageChangedventArgs)
  MydataGrid.CurrentPageIndex = e.NewPageIndex‘重新指定DataGrid对象的当前页。
  Call MyDataBind() ‘重新进行数据绑定。
  End Sub
  Sub MyDataBind() ‘将数据绑定到DataGrid对象中。
  Dim conn As New OleDbConnection("provider=microsoft.jet.oledb.4.0;data source=" & Server.MapPath("教材购销系统.mdb"))
  Dim cmd As New OleDbCommand("select * from 教材一览表", conn)
  Dim ds As New DataSet
  Dim daap As New OleDbDataAdapter(cmd)
  daap.Fill(ds, "教材一览表")
  MydataGrid.DataSource = ds.Tables("教材一览表")
  MydataGrid.DataBind()
  End Sub
  其中e.NewPageIndex会返回用户选择的页码,而CurrentPageIndex属性是用来指定要显示的数据页。除此之外还可以通过DataGrid的PagerStyle属性设置分页导航栏的样式。
  2 使用DataGrid控件自带的默认导航栏进行自定义分页
  第一种方法虽然编码少,且可利用数据集的很多功能,但它的缺点也是显而易见甚至是致命的:它每次显示一个新页时都是将全部数据读取到数据集中,然后只显示其中部分资源(也就是当前页的数据)。数据集会较长时间占用服务器宝贵的内存资源,返回的数据量大时情况会更严重,虽然可尽量减少数据集中的数据量,可每次使用数据适配器填充数据集会增大开销,降低效率,为了避免这种情况DataGrid控件还提供了一套自定义分页功能,可以在每一次显示新页时只从数据库中读取当前页的数据到数据集,这样自然可以节省内存资源。
  要完成自定义分页,除了要设置DataGrid控件的AllowPaging="True"之外还要设置表示允许自定义分页的属性AllowCustomPaging="True"。另外,在填充数据集时要自行指定从第几条记录开始填充,填充到当前页的记录数。具体实现数据绑定的代码如下:
  Sub MyDataBind()
  Dim conn As New OleDbConnection("provider=microsoft.jet.oledb.4.0;data source=" & Server.MapPath("教材购销系统.mdb"))
  Dim cmdC As New OleDbCommand("SELECT Count(书号) AS 书号之计数 FROM 教材一览表;", conn)
  '获取数据表的记录总数对DataGrid控件的VirtualItemCount属性赋值,该属性指示DataGrid在进行分页填充时的实际记录数
  conn.Open()
  Dim total As Long = cmdC.ExecuteScalar()
  conn.Close()
  MyDataGrid.VirtualItemCount = total‘设置总的记录数。
  '获取第一条填充记录的索引
  Dim Start As Long = MyDataGrid.CurrentPageIndex * MyDataGrid.PageSize
'填充数据集
  Dim cmd As New OleDbCommand("select * from 教材一览表", conn)
  Dim ds As New DataSet
  Dim daap As New OleDbDataAdapter(cmd)
  daap.Fill(ds, Start, MyDataGrid.PageSize, "教材一览表")
  MyDataGrid.DataSource = ds.Tables("教材一览表")
  MyDataGrid.DataBind()
  End Sub
  其中VirtualItemCount属性指示该DataGrid控件绑定的数据源实际有多少条记录。这个属性实际上是告诉DataGrid控件一共有多少页。另外通过DataGrid控件的当前页属性CurrentPageIndex乘以DataGrid控件每单页上显示记录项数属性PageSize获得记录集要填充的首条记录的索引,(Start=MyDataGrid.CurrentPageIndex * MyDataGrid.PageSize,请注意页码索引从零开始)。通过PageSize属性获得记录集要填充的记录条数。最后使用daap.Fill(ds, Start, MyDataGrid.PageSize, "教材表")语句对记录集填充。
  当然自定义分页也要创建一个进行相应的事件处理程序,该事件处理程序和第一种分页方法描述的PageIndexChanged事件代码完全相同,不再赘述。 (责任编辑:南粤论文中心)转贴于南粤论文中心: http://www.nylw.net(南粤论文中心__代写代发论文_毕业论文带写_广州职称论文代发_广州论文网)

顶一下
(0)
0%
踩一下
(0)
0%


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