打造通用ASP.NET数据分页控件

作者:东方欲晓 来源:yesky 时间:2007-08-18 13:27:00 

asp之家注:那么为什么要使用分页呢?当记录不多的时候,如10个或20个,我们可以也没必要使用分页来显示数据,但是数据是在不断增加的,当到了成千上万的时候,如果都在一个页面显示所有记录,效率就很低了,用户可能没有这个耐心来等待。因此将数据分成多个页面显示,即对数据进行分页,能够很好的解决这个问题。本文详细介绍了打造一个通用的asp.net数据分页控件的方法!

一、慨述
  ASP.NET本身只提供了一个支持数据分页的控件,即DataGrid分页控件,不过它比较适合Intranet环境使用,对于Internet环境来说,DataGrid分页控件提供的功能似乎不足以构造出灵活的Web应用。其中一个原因是,DataGrid控件对Web设计者放置分页控件的位置和分页控件的外观都有限制,例如,DataGrid控件不允许垂直放置分页控件。另一个能够发挥分页技术优势的控件是Repeater,Web开发者可以利用Repeater控件快速配置数据的显示方式,但分页功能却需要开发者自己实现。数据源在不断地变化,数据表现方式也千差万别,如果针对这些不断变动的条件分别定制分页控件,显然太浪费时间了,构造一个不限于特定表现控件的通用分页控件将极大地有利于节省时间。
  一个优秀的通用数据控件不仅提供常规的分页功能,而且还要能够:
  ⑴ 提供“首页”、“上一页”、“下一页”、“末页”分页导航按钮。
  ⑵ 根据数据显示情况调整自身的状态,即具有数据敏感性。如果分页控件被设置成每页显示10个记录,但实际上只有9个记录,那么分页控件不应该显示出来;在数据分成多页显示的情况下,第一个页面的“首页”、“上一页”按钮不应显示出来,最后一个页面的“下一页”、“末页”按钮也不应该显示出来。
  ⑶ 不能依赖于特定的数据显示控件。
  ⑷ 具有适应各种现有、将有数据源的能力。
  ⑸ 应当能够方便地配置显示方式,轻松地集成到各种应用之中。
  ⑹ 当分页就绪时,提醒其他控件。
  ⑺ 即使是缺乏经验的Web设计者,也要能够毫无困难地使用。
  ⑻ 提供有关分页信息的属性数据。
  目前市场上已经有一些提供上述功能的商业性控件,不过都价格不菲。对于许多开发者来说,自己构造一个通用的分页控件是最理想的选择。
  图一显示了本文通用分页控件的运行界面,其中用于显示的控件是一个Repeater控件。分页控件由两类部件构成:四个导航按钮,一组页面编号链接。

图一
  用户可以方便地改换显示控件、改变分页控件本身的外观。例如,在图二中,和分页控件协作的显示控件换成了一个DataGrid控件,页面编号链接和四个导航按钮分两行显示。

图二
  ASP.NET支持创建定制Web控件的三种方式:用户控件,复合控件,自定义控件。第三种控件即自定义控件的名称很容易引起误解。实际上,所有这三种控件都应该算是自定义控件。复合控件和微软所谓的自定义控件的不同之处在于,前者要用到CreateChildControls()方法,CreateChildControls()方法允许控件根据某些事件重新绘制自身。对于本文的通用分页器,我们将使用复合控件。
  下面的UML序列图概括了通用分页控件的一般机制。

图三
  虽然我们的目标是让通用分页控件不依赖于表现数据的控件,但很显然,总得有某种方法让分页控件访问数据。每一个从Control类继承的控件都提供一个DataBinding事件。我们把分页器本身注册成DataBinding事件的 * ,分页器就可以获知数据的情况并修改数据。由于所有从Control类继承的控件都有这个DataBinding事件,所以分页器控件达到了不依赖于特定数据表现控件的目标——换句话说,分页器控件可以绑定到所有从Control类派生的控件,即它能够绑定到几乎所有的Web控件。

标签:ASP.NET,分页
0
投稿

猜你喜欢

  • Access命令行参数

    2007-08-23 15:35:00
  • 小谈用户身体语言的阅读经验

    2009-10-19 20:52:00
  • 谈谈CSS样式表的命名规范

    2007-10-08 12:41:00
  • CSS样式表中继承关系的空格与不空格

    2007-12-12 13:05:00
  • asp获取客户端的MAC地址

    2007-08-17 10:58:00
  • Oracle数据库与SQL Server数据库镜像对比

    2009-04-11 16:24:00
  • sqlserver 数据库连接字符串中的可选项收集

    2011-10-24 19:48:37
  • 图片自适应宽度新解决方法

    2009-09-22 14:55:00
  • mysql存储过程学习总结

    2011-07-04 12:03:53
  • 在ASP处理程序时,进度显示

    2008-08-04 13:27:00
  • css学习笔记:表格隔行点击变色

    2009-04-30 13:15:00
  • XML和XSLT结合使网站设计浑然一体

    2008-09-05 17:13:00
  • 在服务端合并和压缩JavaScript和CSS文件

    2010-07-15 12:48:00
  • 在sql中返回插入的记录的id

    2008-12-21 15:54:00
  • Pivot,信息组织的梦想之窗

    2009-12-25 14:32:00
  • 一个CSS图片切换效果代码

    2008-02-12 12:17:00
  • MySQL UPDATE delete 语句的速度

    2008-03-12 12:22:00
  • Firefox与IE下UL预设标记的异同

    2007-05-11 17:03:00
  • 简写一个的lightbox显示隐藏层效果(兼容)

    2010-07-23 20:02:00
  • SQL 中主标识列IDENTITY使用技巧

    2011-06-02 08:47:00
  • asp之家 网络编程 m.aspxhome.com