ASP.NET自定义控件组件开发 第五章 模板控件开发
重写 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()。实际上,这个方法是个晚绑定。 为什么是晚绑定?先来看看下面: 假设我们想用个下拉框来输入用户名,我们肯定要设计下拉框的属性,如 name,id,等等,当我们设 置好后,就形如这样了: Code
其实这样和在CreateChildControls()中声明是一样的,形如: Code 1 DropDownList mylist = new DropDownList(); 其实模板控件的方法InstantiateIn()就是将之前的那个 <ASp:dropdownlist....>代码转换为
不知道大家清楚,说到底就是个晚绑定!!! 到这里,模板控件完了,大家编译后,就后看到下面的控件: 然后,我们就在html代码开发声明:如下: Code 1 <cc1:TemplateLoginControl ID="TemplateLoginControl1" runat="server"> 2 <LoginUserNameTemplate > 3 4 </LoginUserNameTemplate> 5 <LoginUserPasswardTemplate> 6 7 </LoginUserPasswardTemplate> 8 </cc1:TemplateLoginControl> 9 很多时候,我们不喜欢这样,因为我们更加喜欢图形化的设置,如下: 这样更加友好些。其实这也不难,只要 |
凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢! |