我爱Aspx >> Asp.Net >> 打造通用ASP.NET数据分页控件⑻ 提供有关分页信息的属性数据。
目前市场上已经有一些提供上述功能的商业性控件,不过都价格不菲。对于许多开发者来说,自己构造一个通用的分页控件是最理想的选择。
图一显示了本文通用分页控件的运行界面,其中用于显示的控件是一个Repeater控件。分页控件由两类部件构成:四个导航按钮,一组页面编号链接。
用户可以方便地改换显示控件、改变分页控件本身的外观。例如,和分页控件协作的显示控件换成了一个DataGrid控件,页面编号链接和四个导航按钮分两行显示。
ASP.NET支持创建定制Web控件的三种方式:用户控件,复合控件,自定义控件。第三种控件即自定义控件的名称很容易引起误解。实际上,所有这三种控件都应该算是自定义控件。复合控件和微软所谓的自定义控件的不同之处在于,前者要用到CreateChildControls()方法,CreateChildControls()方法允许控件根据某些事件重新绘制自身。对于本文的通用分页器,我们将使用复合控件。
下面的UML序列图概括了通用分页控件的一般机制。
虽然我们的目标是让通用分页控件不依赖于表现数据的控件,但很显然,总得有某种方法让分页控件访问数据。每一个从Control类继承的控件都提供一个DataBinding事件。我们把分页器本身注册成DataBinding事件的监听器,分页器就可以获知数据的情况并修改数据。由于所有从Control类继承的控件都有这个DataBinding事件,所以分页器控件达到了不依赖于特定数据表现控件的目标——换句话说,分页器控件可以绑定到所有从Control类派生的控件,即它能够绑定到几乎所有的Web控件。
二、核心功能
当表现控件触发DataBinding事件,分页控件就可以获取DataSource属性。遗憾的是,微软没有提供所有数据绑定类实现的接口,诸如IdataSourceProvider之类,而且并非所有从Control或WebControl类继承的控件都有一个DataSource属性,因此向上定型成Control类没有意义,唯一可行的办法是通过Reflection API直接操作DataSoruce属性。在讨论事件句柄方法之前,应该指出的是,为了注册事件句柄,首先必须获得一个表现控件的引用。分页控件显露了一个简单的字符串属性BindToControl:
Ҷƪл˵?
利用ASP.NET访问共享网络资源[05-20]
了解ASP.NET页面对象模型[05-20]
如何用在ASP.NET中写入事件日志[05-20]
ASP.NET设计控件净化网站语言[05-20]
Asp.Net细节性问题精萃[05-20]
漫谈ASP.NET 页面对象模型[05-20]
ASP.NET+XML打造网络硬盘[05-20]
ASP.NET程序中常用的三十三种代码[05-20]
asp.net 1.1中url重写的问题[05-20]
ASP.NET+AJAX解决网页打开等待问..[05-20]
利用ASP.NET访问共享网络资源[05-20]
了解ASP.NET页面对象模型[05-20]
如何用在ASP.NET中写入事件日志[05-20]
ASP.NET设计控件净化网站语言[05-20]
Asp.Net细节性问题精萃[05-20]
漫谈ASP.NET 页面对象模型[05-20]
ASP.NET+XML打造网络硬盘[05-20]
ASP.NET程序中常用的三十三种代码[05-20]
Visual Studio 2005 中的新的 Da..[05-20]
asp.net 1.1中url重写的问题[05-20]