快速业务通道

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

作者 佚名技术 来源 NET编程 浏览 发布时间 2012-05-20
创建事件和辅助方法:

public event EventHandler<DataListPageEventArgs> 

PageIndexChanging;

protected virtual void OnPageIndexChanging(object sender, 

DataListPageEventArgs e)

{

  if (PageIndexChanging != null)

  {

    PageIndexChanging(sender, e);

  }

}

3.6 编写RenderContent方法,该方法是实现了分页的核心操作,通过实例化 DataListPager类的实例,将触发回发操作的链接加入到当前DataList中:

protected override void RenderContents(HtmlTextWriter writer)

{

  this.RenderBeginTag(writer);


  if (EnablePaging)

  {

    Table table = new Table();

    TableRow row = new TableRow();

    table.Rows.Add(row);

    TableCell cell = new TableCell();


    row.RenderBeginTag(writer);

    cell.RenderBeginTag(writer);


    base.RenderContents(writer);


    cell.RenderEndTag(writer);

    row.RenderEndTag(writer);


    TableRow rowpager = new TableRow();


    DataListPager pager = new DataListPager(PagerSettings, 

PageIndex, RecordCount, PageSize, this);


    rowpager.Cells.Add(pager);


    rowpager.RenderBeginTag(writer);


    pager.RenderControl(writer);


    rowpager.RenderEndTag(writer);


  }

  else

  {

    base.RenderContents(writer);

  }


  this.RenderEndTag(writer);

}

3.7 编写IPostEventHandler接口中RaisePostBackEvent方法的实现,判断当 前事件参数并触发换页事件:

public void RaisePostBackEvent(string 

eventArgument)

{

  string[] args = eventArgument.Split(Constant.ARGUMENT_SPLITTER);


  if (args == null || args.Length < 1)

    return;


  string name = args[0];


  if (name == Constant.PAGE_ARGUMENT)

  {

    int index = 0;

    string argvalue = args[1];

    bool isInt = int.TryParse(argvalue, out index);


    if (isInt)

    {

      DataListPageEventArgs arg = new DataListPageEventArgs

();

      arg.NewPageIndex = index;


      OnPageIndexChanging(this, arg);

    }

  }

}

3.8 重写SaveViewState和LoadViewState方法定义保存和读取视图状态方法:

protected override object SaveViewState()

{

  object o = base.SaveViewState();

  object osetting = ((IStateManager)PagerSettings).SaveViewState

();

  Pair p = new Pair(o, osetting);


  return p;

}


protected override void LoadViewState(object savedState)

{

  if (savedState != null)

  {

    Pair p = (Pair)savedState;

    base.LoadViewState(p.First);

    ((IStateManager)PagerSettings).LoadViewState(p.Second);

  }

  else

  {

    base.LoadViewState(null);

  }

}

3.9 在网站中创建测试页,声明并定义自定义DataList:

<cc:DataList ID="dalData" runat="server" EnablePaging="true"

 PageSize="10" OnPageIndexChanging="dalData_PageIndexChanging" 

PagerSettings-FirstPageText="????">    

  <ItemTempl

凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站: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号