一个独立的通用分页控件c#源码2011-03-12

用户可以方便地改换显示控件、改变分页控件本身的外观。例如,在图一中,和分页控件协作的显示控件可发换成一个DataGrid控件,页面编号链接和四个导航按钮分两行显示。ASP.NET 支持创建定制Web控件的三种方式:用户控件,复合控件,自定义控件。第三种控件即自定义控件的名称很容易引起误解。实际上,所有这三种控件都应该算是自 定义控件。复合控件和微软所谓的自定义控件的不同之处在于,前者要用到CreateChildControls()方法, CreateChildControls()方法允许控件根据某些事件重新绘制自身。对于本文的通用分页器,我们将使用复合控件。下面的UML序列图概括了通用分页控件的一般机制。

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