快速业务通道

ASP.NET自定义控件组件开发 第五章 模板控件开发

作者 佚名技术 来源 NET编程 浏览 发布时间 2012-05-20
重写 CreateChildControls()方法后,就会达到我们的效果?

下面,我就来将这个方法和之前的那个组合控件的 CreateChildControls()方法比较一下,也顺便讲 下模板的内幕。

先看组合控件的 CreateChildControls()方法,见下:

Code

1 protected override void CreateChildControls()
 2         {
 3             Controls.Clear();
 4
 5            //初始化控件lbUserName
 6             lbUserName = new Label();
 7             lbUserName.Text = "用户名:";
 8             lbUserName.ID = "lbUserName";
 9             //把控件添加到我们的组合控件中
10             Controls.Add(lbUserName);
11
12             //初始化控件lbUserPassward
13             lbUserPassward = new Label();
14             lbUserPassward.Text = "密  码:";
15             lbUserPassward.ID = "lbUserPassward";
16             Controls.Add(lbUserPassward);
17
18
19             txtUserName = new TextBox();
20             txtUserName.ID = "txtUserName";
21             txtUserName.Width = Unit.Percentage(60);
22             Controls.Add(txtUserName);
23
24             txtUserPassward = new TextBox();
25             txtUserPassward.ID = "txtUserPassward";
26             txtUserPassward.Width = Unit.Percentage(60);
27             Controls.Add(txtUserPassward);
28
29             submitButton  = new Button();
30             submitButton.Text = "提交";
31             submitButton.CommandName = "Validate";
32             Controls.Add(submitButton);
33
34             ChildControlsCreated = true;
35         }

1.首先,在之前的组合控件中,我们是把那个TextBox,Label硬编码到了生成和初始化控件的方法 CreateChildControls()中。而在模板控件中,我们没有这样做,我们只是简单的调用了模板的一个方 法:

InstantiateIn()。实际上,这个方法是个晚绑定。

为什么是晚绑定?先来看看下面:

ASP.NET自定义控件组件开发 第五章 模板控件开发

假设我们想用个下拉框来输入用户名,我们肯定要设计下拉框的属性,如 name,id,等等,当我们设 置好后,就形如这样了:

Code

1 <asp:DropDownList ID="mylist" runat="server" BackColor ="red" ></asp:DropDownList>

其实这样和在CreateChildControls()中声明是一样的,形如:

Code

1  DropDownList mylist = new DropDownList();
2 mylist.ID = "mylist";
3 mylist.Items = new ListItemCollection();
4 Controls.Add(mylist);
5

其实模板控件的方法InstantiateIn()就是将之前的那个 <ASp:dropdownlist....>代码转换为

DropDownList mylist=new DropDownList()...

不知道大家清楚,说到底就是个晚绑定!!!

到这里,模板控件完了,大家编译后,就后看到下面的控件:

ASP.NET自定义控件组件开发 第五章 模板控件开发

然后,我们就在html代码开发声明:如下:

Code

1  <cc1:TemplateLoginControl ID="TemplateLoginControl1" runat="server">
2             <LoginUserNameTemplate >
3
4             </LoginUserNameTemplate>
5             <LoginUserPasswardTemplate>
6
7             </LoginUserPasswardTemplate>
8         </cc1:TemplateLoginControl>
9

很多时候,我们不喜欢这样,因为我们更加喜欢图形化的设置,如下:

ASP.NET自定义控件组件开发 第五章 模板控件开发

这样更加友好些。其实这也不难,只要

凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢!

分享到: 更多

Copyright ©1999-2011 厦门凌众科技有限公司 厦门优通互联科技开发有限公司 All rights reserved

地址(ADD):厦门软件园二期望海路63号701E(东南融通旁) 邮编(ZIP):361008

电话:0592-5908028 传真:0592-5908039 咨询信箱:web@lingzhong.cn 咨询OICQ:173723134

《中华人民共和国增值电信业务经营许可证》闽B2-20100024  ICP备案:闽ICP备05037997号