[已关闭问题] 怎么输出自定义控件中包含的控件到页面?
提问时间: 2007-12-21 13:45
悬赏分:10 提问时间2007/12/21 13:45:50 问题为何被关闭 浏览:552 次
[DefaultProperty("Text"), ToolboxData("<{0}:TextBox runat=server></{0}:TextBox>")]
    public class TextBox : System.Web.UI.WebControls.TextBox
    {
        protected System.Web.UI.WebControls.RequiredFieldValidator RequiredFieldValidator1 = new RequiredFieldValidator();
        protected System.Web.UI.WebControls.RegularExpressionValidator RegularExpressionValidator1 = new RegularExpressionValidator();
        protected System.Web.UI.WebControls.RangeValidator rangevalidator = new System.Web.UI.WebControls.RangeValidator();
}

如上代码:
想写一个包含验证的TextBox。
声明了几个验证的控件,但是不知道怎么把这个3个控件输出到页面。
请教控件高手。
      
提问者:壁虎 - 初学一级

问题补充:沙加 的用法,其实是原来我是用过的,可以实现。
但是这样的textBox,如果需要系统中textBox的属性就需要,用属性来暴露,比较麻烦。

我以上问题的做法是继承系统的textBox。但是这样做以后,验证控件却没法输出了。
沙加 his.Controls.Add(...)写法,在这种场景下是不行的。



(3)
Render() 方法基本上控制着 WebControl 的整个输出。所以可以自己重写Rendr()方法来实现控件的输出 我以前写过一个广告控件,你可以参考一下,原理差不多的 http://www.cnblogs.com/devngm/archive/2007/06/18/787226.html
9个月前   回答者:Wilensky - 小虾三级
包含了两个或以上控件可以继承自CompositeControl,具体可以看一下 msdn 的例子
9个月前   回答者:Klesh Wong - 小虾三级
前台调用: <%@ Page Language="C#" AutoEventWireup="true" CodeFile="Default.aspx.cs" Inherits="_Default" %> <%@ Register Assembly="MulTest.Core" Namespace="MulTest.Core" TagPrefix="Test" %> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head runat="server"> <title>Untitled Page</title> </head> <body> <form id="form1" runat="server"> <Test:MyCompositeControl ID="test" runat="server" /> <asp:Button runat="server" ID="ctr" Text="提交内容" /> </form> </body> </html> 后台: using System; using System.Collections.Generic; using System.Text; using System.Web.UI.WebControls; namespace MulTest.Core { public class MyCompositeControl : System.Web.UI.Control { private TextBox tbUserName = new TextBox(); private RequiredFieldValidator validatorForUserName = new RequiredFieldValidator(); protected override void CreateChildControls() { base.CreateChildControls(); //tbUserName.ID = "testusertname";//我这里写死了, 可以公开一个属性,用属性来指定它的ID或者根据当控件的ID来生成. tbUserName.ID = this.ID + "_username"; //validatorForUserName.ID = "testvalidator"; validatorForUserName.ID = this.ID + "_usernamevalidator"; validatorForUserName.ControlToValidate = this.tbUserName.ID; validatorForUserName.ErrorMessage = "**"; this.Controls.Add(tbUserName); this.Controls.Add(validatorForUserName); } } } 在VS2005下测试通过.
9个月前   回答者:沙加 - 老鸟四级
   您需要登录以后才能回答!
 

我要提问

我的问题


快到期问题

> 问题排行榜

相关内容

相关链接