ASP.NET自定义控件 第十天 实现分页功能的DataList2011-09-02 博客园 holywolf1. 引言在ASP.NET中DataList可以实现数据展示,我们可以通过定制其模版实现丰富 的格式,但是美中不足的时DataList默认情况下不支持分页,我们当然可以编写 一个用户控件以实现分页功能,但是这种方案仍然不是很好,我们希望像使用普 通ASP.NET服务器端控件一样,只需要放置一个DataList并设置分页样式就可以输 出分页链接。在上次任务中我们创建了DataPager类将创建分页的操作从GridView分离出来 ,本次任务将尝试重用DataPager类为DataList增加分页特性。2. 分析开发自定义GridView控件时,可以通过向控件中加入具有特定CommandName的 按钮实现分页,但是对于DataList却不适用,因为DataList不能接收到客户端的 回发事件,这也是DataList类和GridView类的一个区别—DataList类没有实现 IPostBackEventHandler接口。为了能够使DataList接收客户端回发并触发分页事 件,需要使自定义DataList实现IPostBackEventHandler接口,并使用自定义事件 参数类在触发事件时传递页码信息。IPostBackEventHandler接口定义了ASP.NET服务器控件为处理回发事件而必须 实现的方法,它的成员只有一个方法:
void RaisePostBackEvent(string eventArgument)
该方法由类实现时,使服务器控件能够处理将窗体发送到服务器时引发的事件 。接下来需要考虑如何在客户端引起回发事件,即怎样生成回发脚本。这里使用 到了ClientScriptManager类,该类作为Page类的一个属性ClientScript出现,通 过调用该类的GetPostBackClientHyperlink方法生成客户端脚本以引起回发,该 方法有两个形式的重载:GetPostBackClientHyperlink (Control, String)获取一个引用,并在其开头附加 javascript:,可以在客户端事件中使用该引 用,并将该引用与指定的事件参数一起使用,以便回发到指定控件的服务器。GetPostBackClientHyperlink (Control, String, Boolean)获取一个引用,并在其开头附加 javascript:,该引用可用于在客户端事件中 回发到指定控件的服务器,回发时使用指定的事件参数和一个指示是否为事件验 证注册该回发的布尔值。其中第一个参数指明了处理回发的服务器控件,第二个参数代表传递给服务器 控件的参数,第三个参数代表是否验证注册回发事件。接下来编写实现代码。