全编辑WebGrid控件LrcGrid(6)——控件呈现[1]

[入库:2005年8月18日] [更新:2007年3月24日]

本文简介:选择自 masterlrc 的 blog

全编辑webgrid控件lrcgrid(6)——控件呈现

创建子控件

  • 重写createchildcontrols()过程,调用创建子控件的方法rebuild()

每当 asp.net 页框架需要创建控件树时就会调用createchildcontrols()方法,且该方法调用并不限于控件生命周期的特定阶段。例如,可以在加载页时、在绑定数据过程中或者在呈现过程中调用createchildcontrols

  protected override void createchildcontrols()
  {
   this.rebuild();
  }
  • 重写onprerender(eventargs e)过程,注册客户端脚本块,此脚本可使用户回车时进行焦点跳转,注释掉的部分为使用资源文件的方法.
  protected override void onprerender(eventargs e)
  {
   base.onprerender (e);
   if(this._istabchg)
   {
    if(!page.isclientscriptblockregistered("lrc_chgtab"))
    {
     string str_chgtab = @"<script language='javascript' event='onkeydown' for='document'>
             <!--
             if(event.keycode==13 && event.srcelement.type!='button' && event.srcelement.type!='submit' && event.srcelement.type!='reset' && event.srcelement.type!='')
              event.keycode=9;
             -->
           </script>";
     page.registerclientscriptblock("lrc_chgtab",str_chgtab);
    }
   }
   /*
    *
   resourcemanager manager = new resourcemanager(this.gettype());
   resourceset resources = manager.getresourceset(system.globalization.cultureinfo.currentculture,true,true);
   if(!page.isclientscriptblockregistered("liuruicai.lrcgrid.script"))
   {
    string script = resources.getstring("clientscript");
    this.page.registerclientscriptblock("liuruicai.lrcgrid.script",script);
    string style = resources.getstring("clientstyle");
    this.page.registerclientscriptblock("liuruicai.lrcgrid.style",style);
   }
   */

  }

rebuild()方法,当在运行时改变了控件属性,可调用此方法重新构造控件,它调用一系列的内部过程:管理视图状态,清空子控件,重新初始化数据集,创建标题行、创建数据行、创建操作行等:

  /// <summary>
  /// 重新构造控件
  /// </summary>

  public void rebuild()
  {
   if(this.currentpageindex == -1)
    this.currentpageindex = 0;
   this.controls.clear();
   this.clearchildviewstate();
   this.attributes.add("isdel",this._isdel.tostring());
   this.attributes.add("isadd",this._isadd.tostring());
   this.dbset = null;
   base.createchildcontrols ();
   //创建标题行
   buildtitle();
   initdataset();
   if(this.dbset != null)
   {
    if(this.dbset.tables.count > 0)
    {
     if(this.dbset.tables[0].rows.count > 0)
     {
      //创建数据行
      buildcol();
     }
    }
   }
   //创建操作行
   buildoper();
  }

本文关键:全编辑WebGrid控件LrcGrid(6)——控件呈现
 

本站最佳浏览方式为 分辨率 1024x768 IE 6.0(或更高版本的 IE浏览器)

go top