创建一个简单的完整模板服务器控件步骤:
1、定义要和模板控件类一起使用的容器类。
2、用ParseChilden特性标记控件类,使模板属性中的Html元素能被页面分析器解析;
3、为每个定义的模板呈现ITemplate类型公有属性;
4、用TemplateContainer特性装饰模板属性,来通知将会使用模板控件类型的运行时;[TemplateContainer(typeof(TemplatedListItem))]
5、创建容器类实例或子控件实例,使用InstantiateIn方法内联它们,并绑定数据到容器实例或子控件实例,最后把它们添加到服务器控件集
合中去;
动态模板:
1、定义一个类实现ITemplate接口;
2、在这个类中实现ITemplate唯一的方法InstantiateIn;
创建一个简单的模板化数据绑定控件步骤:
1、定义实现INamingContainer接口的控件;
2、定义Itemplate类型的属性;模板的逻辑容器(在 TemplateContainerAttribute 属性中指定)必须具有要将数据绑定到的属性。根据约
定,该属性名为DataItem
3、重写 DataBind 方法(继承自 Control)以提供数据绑定逻辑。此操作必须包括以下步骤:
a:调用基类的 OnDataBinding 方法以调用对您的控件计算数据绑定表达式的处理程序(由该页附加)。
b:清除 Controls 集合。
c:清除子控件的 ViewState。
d:使用数据源创建子控件。
e:向 ASP.NET 页框架发出信号以跟踪控件的 ViewState。
4、重写 CreateChildControls 以在回发方案中重新创建子控件。这涉及清除 Controls 集合以及使用视图状态而不是数据源创建控件层次
结构。
5、定义一个具有空元素的数据源,并且在回发期间创建控件层次结构时使用该数据源而不是实际数据源。步骤 3 和步骤 4 分别使用该数据
源和保存的视图状态创建控件层次结构。虚拟数据源使控件能够为这两个步骤的公共元素实现单个代码路径。(方法CreateControlHierarchy)