类型:转载 责任编辑:asp.net 日期:2007/05/23
热门软件下载:
我想实现这样的功能:
建一个.ascx用户控件clsTest;
此时会生成一个clsTest:System.Web.UI.UserControl类;
拖放一个TextBox到该.ascx界面上,将其命名为txtTest,Text填充为ABCDEFG;
当我new一个clsTest时,即可获得txtTest的Text值?
而不用将此用户控件拖放到页面上去。
网友回答:
建立一个新项目,照上面的做,编译为dll,然后在别的项目中引用
把那个TEXTBOX设置为PUBLIC的,或者是在用户控件中设置一个PUBLIC的属性来获得TEXTBOX的内容
wangsaokui大哥的方法可以的。
补充下。建立项目类型为控件库。
.ascx方法:
private void InitializeComponent()
{
this.Load += new System.EventHandler(this.Page_Load);
this.TextBox1.Text = @"test"; //set value }
应该可以实现,不过每次对控件内容做修改时,
还需要再重新编译一次。
你可以设定控件类的构造函数,把控件内容作为参数传递进去,以后不就随时可以改变啦???
.ascx中居然没有textbox1的实例化的代码,但是在InitializeComponent中设置拖到界面上是有作用的,汗。究竟它的实例化在什么时候进行就不得而知了,也许这是用户空件和自定义空件的区别吧,希望高手解答...
继承一个 System.Web.UI.UserControl 类来专门对这个ascx作配置也许可行,把ascx的属性和中间这个类关联起来。
这仅仅是思路,涉及事件和委托。
>>而不用将此用户控件拖放到页面上去
with a user control, you need to use LoadControl method, for example, use a PlaceHolder inside your
<form runat="server">
<asp:PlaceHolder id="ph" runat="server" />
..
</form>
in your code behind:
protected PlaceHolder ph;
clsTest c = (clsTest)LoadControl("YourUserControl.ascx");
ph.Controls.Add(c);
...
then either expose the TextBox as a property in your User Control or try something like
TextBox tb = (TextBox)c.FindControl("txtTest");
string s = tb.Text;
or
string s = Request.Form[tb.UniqueID];