首页 新闻 赞助 找找看

怎么输出自定义控件中包含的控件到页面?

0
悬赏园豆:10 [已关闭问题] 关闭于 2008-03-04 18:01
[DefaultProperty("Text"), ToolboxData("&lt;{0}:TextBox runat=server&gt;&lt;/{0}:TextBox&gt;")]<br>&nbsp;&nbsp;&nbsp; public class TextBox : System.Web.UI.WebControls.TextBox<br>&nbsp;&nbsp;&nbsp; {<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; protected System.Web.UI.WebControls.RequiredFieldValidator RequiredFieldValidator1 = new RequiredFieldValidator();<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; protected System.Web.UI.WebControls.RegularExpressionValidator RegularExpressionValidator1 = new RegularExpressionValidator();<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; protected System.Web.UI.WebControls.RangeValidator rangevalidator = new System.Web.UI.WebControls.RangeValidator();<br>}<br><br>如上代码:<br>想写一个包含验证的TextBox。<br>声明了几个验证的控件,但是不知道怎么把这个3个控件输出到页面。<br>请教控件高手。<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br>
问题补充: 沙加 的用法,其实是原来我是用过的,可以实现。 但是这样的textBox,如果需要系统中textBox的属性就需要,用属性来暴露,比较麻烦。 我以上问题的做法是继承系统的textBox。但是这样做以后,验证控件却没法输出了。 沙加 his.Controls.Add(...)写法,在这种场景下是不行的。
壁虎的主页 壁虎 | 初学一级 | 园豆:140
提问于:2007-12-21 13:45
< >
分享
所有回答(3)
0
Render() 方法基本上控制着 WebControl 的整个输出。所以可以自己重写Rendr()方法来实现控件的输出 我以前写过一个广告控件,你可以参考一下,原理差不多的 http://www.cnblogs.com/devngm/archive/2007/06/18/787226.html
niugm | 园豆:1685 (小虾三级) | 2007-12-21 13:59
0
包含了两个或以上控件可以继承自CompositeControl,具体可以看一下 msdn 的例子
Klesh Wong | 园豆:780 (小虾三级) | 2007-12-21 20:39
0
前台调用: <%@ 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下测试通过.
沙加 | 园豆:3680 (老鸟四级) | 2007-12-25 12:54
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册