ASP.NET控件开发基础(19)

http://tech.ddvip.com   2007年09月02日    社区交流

内容摘要:上两篇讨论了基本数据绑定控件的实现步骤,基本上我们按着步骤来就可以做出简单的数据绑定控件了。过年前在看DataGrid的实现,本来想写这个的,但2.0出了GridView了,再说表格控件实现比较复杂,所以先放着。我们一起打开MSDN来看点别的,当然主题还是离不开数据绑定控件。

  2.2呈现

  CheckBoxList为复合控件,本该重写TagKey属性和CreateChildControls方法等,而是在构造函数中添加了CheckBox。.net提供了一个RepeatInfo的辅助类,其与实现IRepeatInfoUser接口的控件搭配使用,此类的RenderRepeater方法会调用CheckBoxList的RenderItem方法,然后根据控件的布局自上而下呈现项列表信息。要区分清楚RenderItem方法位呈现一条项信息,RenderRepeater方法是呈现列表信息

  此实现过程在Render方法中实现,而非RenderContents方法.

      protected override void Render(HtmlTextWriter writer)
      {
  
        RepeatInfo ri = new RepeatInfo();
        //设置呈现布局
        ri.RepeatColumns = RepeatColumns;
        ri.RepeatDirection = RepeatDirection;
        ri.RepeatLayout = RepeatLayout;
  
        short ti = 0;
        if (TabIndex != 0)
        {
          check_box.TabIndex = TabIndex;
          ti = TabIndex;
          TabIndex = 0;
        }
  
        //呈现项列表信息
        ri.RenderRepeater(writer, this, ControlStyle, this);
  
        if (ti != 0)
          TabIndex = ti;
      }

  2.3预呈现

  将CheckBoxList中属性赋给子控件,在呈现之前执行必要的预呈现

   protected override void OnPreRender(EventArgs e)
      {
        base.OnPreRender(e);
  
        check_box.AutoPostBack = AutoPostBack;
        check_box.CausesValidation = CausesValidation;
        check_box.ValidationGroup = ValidationGroup;
  
       
        //自动回传
        for (int i = 0; i < Items.Count; i++)
        {
          if (Items[i].Selected)
          {
            check_box.ID = i.ToString(CultureInfo.InvariantCulture);
            Page.RegisterRequiresPostBack(check_box);
          }
        }
      }

责编:豆豆技术应用

正在加载评论...