ASP.NET控件开发基础(16)
上一篇说要对以前进行补充,那个补充就先留着吧.写总结比较累,所以这篇为第16篇,第15篇先留着 这次我们继续讨论.主题是模板控件,模板控件将是复杂控件的起步 1.asp.net内置的模板控件,了解模板控件 如下图,以下为asp.net内置的模板控件 上图的控件一方面是模板控件,另一方面又是数据绑定控件.这里我们暂且不讨论如何实现数据绑定. 使用上面控件的话,应该熟悉控件存在着不同的模板,如下图Repeater控件的模板类型. 在不同模板内你可以定义控件显示内容会呈现不同效果.典型的运用就是GridView,其呈现代码会是一个表格代码,而Repeater则是自定义的.其实其是内部已经实现了的,暂且先不管这些.下面一步步看下来如何实现. 2.实现模板控件 2.1简单实现模板控件(静态模板) (1)模板控件为特殊的复合控件,你还是需要实现INamingContainer接口,因为在模板属性的内容是为子控件集合添加到模板控件中,为保证控件具有唯一标识符.其实现将在CreateChildControls方法中创建子控件. asp.net2.0中可以直接继续CompositeControl就可 (2)定义控件属性 模板属性为System.Web.UI.ITemplate 接口,此接口有一InstantiateIn 方法 将在下面分析 上一篇我们说明了控件内部属性和控件的区别,模板并非控件而是属性,我们在属性浏览器中并未看到此属性,是因为我们为其加了元数据,作为内部属性使用 定义模板属性方法如下
这里我们认识到了一个TemplateContainer元数据,其与容器控件关联起来.Article为默认其自身控件,即默认将自身控件作为容器控件. (3).重写CreateChildControls方法 此方法我们以前已认识过了,主要是为控件添加子控件
这次我们要做的重点是认识ITemplate接口的InstantiateIn 方法,方法有一个Control参数,其为子控件和模板定义了一个容器控件(此处为其自身控件,下面看页面代码).如GridView和DataList控件都实现了自定义的容器控件.Repeater则是完全自定义的.这里暂且默认实现 实现代码 在模板内拖了一个label控件
OK,你可以看一下效果了,当然你可以定义多个模板然后在多个不同模板内添加内容.我们来看下其控件树内容,如下图 子控件有一个Label控件,非控件内容则以LiteralControl呈现. 2.2实现动态模板 当我们使用DataList控件时,往往在模板中动态的绑定一些数据,获取的这些数据则是ITemplate接口的InstantiateIn 方法中的容器控件.下面我们为控件定义属性,然后通过DataBind()方法和数据绑定表达式获取数据 我们先先定义三个属性 页面代码,注意要用DataBind()方法
|
凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢! |