好学IT学院:IT信息技术分享交流平台
标签:.NET  来源:互联网  作者:不详  发布时间:2007-01-04  ★★★加入收藏〗〖手机版
基于ASP.NET的自定义分页显示
摘要:摘要:本文针对WEB数据库记录的显示问题,用实例讨论了在ASP.NET框架下使用DataGrid控件对数据库记录的一种自定义分页显示。…

摘要:本文针对WEB数据库记录的显示问题,用实例讨论了在ASP.NET框架下使用DataGrid控件对数据库记录的一种自定义分页显示。

关键词:WEB数据库;ASP.NET;DataGrid;分页

引言

在用户进行数据查询时通常有这样的情况,一个数据库查询将返回太多的行,一致不能在一页中显示。如果用户正在使用一个慢的链接,发送特别大的数据结果可能要花很长的时间。一旦获得了数据,用户可能发现它不包含正确的内容,或者查询范围太大,没有容易的办法检查完所有的结果来找到重要的信息。因此,对查询结果分页显示将为用户可管理的数据查询提供极大的方便。分页显示是一种非常常见的浏览和显示大量数据的方法,属于web编程中最常处理的事件之一,现在网站基本上都提供了分页显示信息的功能,但大部分还是基于ASP的,而.NET平台框架是针对各种各样的Web应用设计的,因此本文讨论了一种在ASP.NET框架下实现查询记录自定义分页显示的技术。

ASP.NET

.NET是通过平台独立的数据描述方法(通过XML)和通用的访问媒介Internet来简化用户访问和存储信息的过程。

ASP.NET是Microsoft.Net框架的核心元素,是一项基于服务器的强大技术,利用它,可以为WWW站点或企业内部网创建动态可以交互的HTML页面。ASP.NET 完全基于模块和组件,具有很好的可扩展性和可定制性。它主要包括WebForm和WebService两种编程模式。前者为用户提供功能强大、外观丰富的基于表单(Form)的可编程Web页面;后者通过对HTTP、XML、SOAP、WSDL等Internet标准的支持提供在异构网络环境下获取远程服务、链接远程设备、交互远程应用的编程界面。

通过ADO.NET链接、操纵数据源

在Microsoft公司推出开放式数据库互连(ODBC)应用程序编程接口(API)以来,出现了各种各样的数据库访问技术,而直到ADO.NET出现,API才能实时地给出处理效果。ADO.NET是ASP.NET应用程序用来与数据库进行通信的技术,使你可以同关系数据库和其他数据源进行交互。断开的访问是ADO.NET最重要的特性,是对ADO最大的改变。ADO.NET创建一个到数据库的链接,用从数据库中提取的信息副本填充数据集。如果改变了数据集(DataSet)中的信息,数据库里相应表格中的信息不会改变。需要时,可以把DataSet连回最初的数据源并应用所有的改变。

ADO.NET主要依赖以下核心对象的功能。它们分为两个组:一组对象用来存放和管理数据(例如:DataTable,DataRow和DataRelation),另一组对象用来链接到某个特定的数据源(例如:Connections,Commands和DataReader类)

在大多数的情况下,需要的数据是在某个数据源(例如:某个关系数据库)中。要想对这些数据进行访问、提取并将其插入到适当的数据对象中,就必须使用数据源对象。使用数据源对象的目的是创建一个链接并把相关信息移入某个DataSet或DataReader中。一种最简单的数据库访问方法是:利用Command对象直接进入数据源并通过DataReader检索只读数据行。另一种选择:把数据放入某个断开链接的DataSet,从而在更长的时间段操作。

用DataGrid控件分页显示记录

在创建链接和命令对象之后就要把返回的记录显示出来。DataGrid控件是ASP.NET中功能最强大也是最复杂的数据控件,可以用它来显示和格式化数据表的数据,它除了内建的数据表现和方法之外,还允许用户自己定义表现形式。分页技术为用户可管理的数据查找提供方便。

1、DataGrid内建分页技术原理

DataGrid内建分页技术很容易实现,但数据量很大时,它的方便性是以牺牲性能为代价的。如果一个用户只要求100个页面中每页显示25条记录的第8页的结果集,服务器只需要发送第175-200行的数据即可,而不是1-1000行的完全数据。默认的传送方式如图1所示。

图1 DataGrid默认传送方式
  从图1中可以看出,DataGrid的内建分页方法效率不高,每次请求都必须把整个查询结果发送给Web服务器,Web服务器再把数据分成相应的页面。利用DataGrid的内建的分页方法尽管是很简单的,但是,由于Web应用的无序性特征,一个用户每次从一个页面转向另外一个页面时,DataGrid对象都被销毁并重新创建,这就意味着数据库服务器每次都必须发送全部的结果集。