快速业务通道

ASP.NET自定义控件 第十天 实现分页功能的DataList

作者 佚名技术 来源 NET编程 浏览 发布时间 2012-05-20

1. 引言

在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:,该引用可用于在客户端事件中 回发到指定控件的服务器,回发时使用指定的事件参数和一个指示是否为事件验 证注册该回发的布尔值。

其中第一个参数指明了处理回发的服务器控件,第二个参数代表传递给服务器 控件的参数,第三个参数代表是否验证注册回发事件。

接下来编写实现代码。

3. 实现

3.1 创建DataListPager类,该类继承自DataPager类实现了为分页链接添加回 发脚本操作:

public class DataListPager : DataPager

{

  public DataListPager(PagerSettings setting, int pageIndex, int

 recordCount, int pageSize, DataList dal)

    : base(setting, pageIndex, recordCount, pageSize)

  {

    LinkButton btn = null;

    int _pageCount = recordCount % pageSize == 0 ? 

recordCount / pageSize : recordCount / pageSize + 1;

    int index;


    foreach (Control control in this.Controls)

    {

      if (control is LinkButton)

      {

        btn = (LinkButton)control;


        if (btn.Enabled)

        {

          string argvalue = btn.CommandArgument;


          bool isInt = int.TryParse(argvalue, out 

index);

          string arg = string.Empty;

          if (isInt)

          {

            index--;

          }

          else

          {

            switch (argvalue)

            {

      

凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢!

分享到: 更多

Copyright ©1999-2011 厦门凌众科技有限公司 厦门优通互联科技开发有限公司 All rights reserved

地址(ADD):厦门软件园二期望海路63号701E(东南融通旁) 邮编(ZIP):361008

电话:0592-5908028 传真:0592-5908039 咨询信箱:web@lingzhong.cn 咨询OICQ:173723134

《中华人民共和国增值电信业务经营许可证》闽B2-20100024  ICP备案:闽ICP备05037997号