2011-01-25 68 views
0

我有一个包含文本框的用户控件。我现在想为该用户控件添加变量,我们称它为Text,它将用传入的值填充文本框。我认为这可以在用户控件背后的代码中的“set”变量中完成。在页面设置usercontrol中的文本框文本

public string Text 
{ 
    get {} 
    set 
    { 
     txtBox.Text = value; 
    } 
} 

txtBox是usercontrol内的文本框的ID。有谁知道这可以做到吗?

感谢

编辑 我怀疑的问题是,我设置在承载用户控件的页的Page_Load中的文本值。我应该在哪里设置这个值?

+1

这不是工作? – Chandu 2011-01-25 06:19:51

+0

没有它没有。不能为我的生活找出原因。事件剥离了我的usercontrol到什么都不是,而是一个文本框,什么都没有。 – Peuge 2011-01-25 06:22:53

回答

0

如果你的问题是,txtBox为null,则我可以建议你如下:

如果你正在创建一个用户控制动态再不要忘了之前添加到页面的控件树(或隐明确)访问其子控件。否则,所有这些子控件将保持未初始化:

MyUserControl ctrl = (MyUserControl)Page.LoadControl("~/MyUserControl.ascx"); 
base.Controls.Add(ctrl); 

ctrl.Text = "some value"; 

如果你的用户控件在页面的标记中声明这时别忘了使用Register指令与“源”属性设置为用户控件的位置登记:

<%@ Register TagPrefix="controls" TagName="MyUserControl" 
    Src="~/MyUserControl.ascx" %> 

<controls:MyUserControl id="ctrl1" Text="some value" runat="server" /> 

使用以下方法,如果是动态创建的所有子控件将无法正常工作(不是这样的注册用户控件但你并不需要一个用户控件 - 你只需要在派生类Control分类):

<%-- Will not work for user controls --%> 
<%@ Register Assembly="MyControlsAssembly.Shell" Namespace="MyControls" 
    TagPrefix="controls" %> 

希望这会对你有所帮助。

相关问题