开发模板化控件的方法

开发模板化控件的方法:

1.实现 System.Web.UI.INamingContainer 接口.(它可以在控件下创建新的命名范围,这样子控件就在名称树中有了唯一的标识符).
2.将 ParseChildrenAttribute 应用到控件,并传递 true 作为参数.在ASP.NET页上声明性地使用控件时,这样可以指示页分析器如何分析模板属性标记.(也就是说,应用这个元数据属性,可以使页分析器正确的分析模板的属性标记.
[注意:如果控件从WebControl派生,则不用了,因为WebControl已经用该属性作为标记.
3.定义一个或多 System.Web.UI.ITemplate类型的属性.这个属性必须有 System.Web.UI.TemplateContainerAttribute 类型的无数据属性,它指出这个 ITemplate 类型的属性将被哪种 INamingContainer 控件所拥有.(也就是说,用TemplateContainerAttribute元数据属性来标识出控件的模板的容器)
4.为你正在创建的模板化控件创建一个独立的容器控件.(创建这个东西的原因我现在不太清楚,请参见以后关于 模板化数据绑定控件的内容.
5.重写CreateChildControls方法,在模板中创建子控件.
    A.实例化模板容器.
    B.调用模板属性的 InstantiateIn方法并将该容器作为参数传递给它.
    C.将模板容器的示例添加到你的模板化控件的Controls 集合.
示例:
private Control myTemplateContainer;
protected override void CreateChildControls()
{
    if(FirstTemplate != null)
    {
        myTemplateContainer = new FirstTemplateContainer(this);
        FirstTemplate.InstantiateIn(myTemplateContainer);
        Controls.Add(myTemplateContainer);
    }
    else
    {
        Controls.Add(new LiteralControl(Text + " " + DateTime));
    }
}

6.重写从 Control继承的 OnDataBinding 方法:
protected override void OnDataBinding(EventArgs e)
{
    EnsureChildControls();
    base.OnDataBinding(e);
}

EnsureChildControls方法保证在数据绑定之前创建模板中的子控件.
调用基类的 OnDataBinding 方法发确保调用已注册的事件处理程序.

7.对控件中的每一个模板属性执行以上步骤.
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值