上一篇说要对以前进行补充,那个补充就先留着吧.写总结比较累,所以这篇为第16篇,第15篇先留着

这次我们继续讨论.主题是模板控件,模板控件将是复杂控件的起步

1.asp.net内置的模板控件,了解模板控件

如下图,以下为asp.net内置的模板控件

asp.net控件开发基础(16) --------服务器模板控件

上图的控件一方面是模板控件,另一方面又是数据绑定控件.这里我们暂且不讨论如何实现数据绑定.

使用上面控件的话,应该熟悉控件存在着不同的模板,如下图Repeater控件的模板类型.

asp.net控件开发基础(16) --------服务器模板控件

在不同模板内你可以定义控件显示内容会呈现不同效果.典型的运用就是GridView,其呈现代码会是一个表格代码,而Repeater则是自定义的.其实其是内部已经实现了的,暂且先不管这些.下面一步步看下来如何实现.


2.实现模板控件

2.1简单实现模板控件(静态模板)

(1)模板控件为特殊的复合控件
,你还是需要实现INamingContainer接口,因为在模板属性的内容是为子控件集合添加到模板控件中,为保证控件具有唯一标识符.其实现将在CreateChildControls方法中创建子控件.

asp.net2.0中可以直接继续CompositeControl就可

(2)定义控件属性

模板属性为System.Web.UI. asp.net控件开发基础(16) --------服务器模板控件        //声明变量
asp.net控件开发基础(16) --------服务器模板控件
        private ITemplate _itemTemplate;
asp.net控件开发基础(16) --------服务器模板控件
asp.net控件开发基础(16) --------服务器模板控件
asp.net控件开发基础(16) --------服务器模板控件        
//属性
asp.net控件开发基础(16) --------服务器模板控件
        [Browsable(false)]
asp.net控件开发基础(16) --------服务器模板控件        [TemplateContainer(
typeof(Article))]
asp.net控件开发基础(16) --------服务器模板控件        [PersistenceMode(PersistenceMode.InnerProperty)]
asp.net控件开发基础(16) --------服务器模板控件        
public ITemplate ItemTemplate
        }

这里我们认识到了一个TemplateContainer元数据,其与容器控件关联起来.Article为默认其自身控件,即默认将自身控件作为容器控件.

(3).重写CreateChildControls方法

此方法我们以前已认识过了,主要是为控件添加子控件

asp.net控件开发基础(16) --------服务器模板控件        protected override void CreateChildControls()
        }


asp.net控件开发基础(16) --------服务器模板控件    <custom:Article
asp.net控件开发基础(16) --------服务器模板控件        
id="Article1"
asp.net控件开发基础(16) --------服务器模板控件        Runat
="server">
asp.net控件开发基础(16) --------服务器模板控件        
<ItemTemplate>
asp.net控件开发基础(16) --------服务器模板控件        
<asp:Label ID="Label1" runat="server" Text="Label"></asp:Label>
asp.net控件开发基础(16) --------服务器模板控件        
</ItemTemplate>
asp.net控件开发基础(16) --------服务器模板控件    
</custom:Article>   

相关文章: