网络编程
位置:首页>> 网络编程>> ASP.NET>> 打造通用ASP.NET数据分页控件

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

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

标签:ASP.NET,分页

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控件。

0
投稿

猜你喜欢

  • 以前跟同事开玩笑时说过,我们遇到的用户在访谈测试过程中的表现基本上就三种类型,发泄型,赞美型和实话实说型。发泄型用户通常是在产品的使用过程中
  • 在IE7还不支持counter 和increment 属性之前,我从来没有用过它们,也从来没有使用过:before 伪元素和content
  • 当我们使用访问一个没有声明的变量时,JS会报错;而当我们给一个没有声明的变量赋值时,JS不会报错误,相反它会认为我们是要隐式申明一个全局变量
  • 我们都知道在9i之前,要想获得建表和索引的语句是一件很麻烦的事。我们通常的做法都是通过export with rows=no来得到,但它的输
  • 在dreamweaver4中,你可以存储你自己设定的图片,链接,flash影片,颜色表,模板等等,组成这个站点的资产,这就是Assets面板
  • 在动态删除iframe时,同时把iframe里嵌套的iframe 删除,遇到了这个问题。本来之前都没报错,突然昨天他们嵌套了一个 跨域 的网
  • 有些时候我们需要得到刚刚插入数据库中的条目id,用于相关系统的更改,在以前我是使用select+top 1+desc 这种笨方法实现的,在没
  • 段正淳的css笔记(1)分类之间的横竖线:试想过总结出这几年来写css与xhtml的经验 ,汇总成一片”旷世奇文”分享给大家。无奈寡人年世已
  • 有三种主要的错误类型: 1.编译错误: 这种错误出现一般都是代码的语法问题。因为编译错误而导致辞ASP停止运行。 2.运行错误: 这个错误是
  • 以下为引用的内容:DROP PROCEDURE test_insert ;DELIMITER ;;CREATE PROCEDURE test
  • 客户的一台服务器出现Raid故障,经过我们的努力,数据基本恢复成功,但是其中的一个SQL Server日志文件(扩展名LDF)损坏严重,基本
  • 在实用美术中,常有"远看色彩近看花,先看颜色后看花,七分颜色三分花"的说法。这也就说明,在任何设计中,色彩对视觉的刺激起
  • 添加用户(随着用户的创建,自动产生与用户同名的schema) CREATE USER "TESTER" PROFILE
  • asp代码 如下:读取注册表信息使用了对象WScript.Shell<%Dim strPath strP
  • 本文介绍了在js和asp中使用FileSystemObject(fso)来: 创建、添加或删除数据,以及读取文件; 移动、复制和删除文件;创
  • 网页的圆角处理,其实最开始的九宫格的表格处理是挺方便的,只是现在都不用表格布局了,自然就被非法取缔了。呵呵。微软的有VML画圆角,由于只是它
  • 说到客户端数据存储,可能第一时间想到的是cookies,这是一种网站常见的存储数据的方法。它的最大优点是兼容性好,几乎所有浏览器都具有这个功
  • 静态页面是蜘蛛喜欢的,会得到蜘蛛经常光顾的,以至于网站上的内容会得到搜索引擎更多的收录。这里介绍一个asp伪静态的程序实现方法数据库是acc
  • 今天发现了一个显示ORACLE语法的好网站。内容太多,就不一一摘录了,记在这里,也方便自己查找。http://ss64.com/ora/ 目
  • reflow是个神奇的东西,之前Realazy说到过这个reflow,我摘出其中的重点:在CSS规范中有一个渲染对象的概念,通常用一个盒子(
手机版 网络编程 asp之家 www.aspxhome.com