如何获取用户控件内的TextBox(以编程方式添加)的值(在Repeater中的用户控件渲染)

时间:2013-04-24 20:57:28

标签: asp.net webusercontrol

通常我们这样做是为了获取用户控件内的textbox的值。

<asp:TextBox runat="server" Text="Test" ID="txtTest"/>

在代码后面创建一个属性

public string MyString
  {  
     get  { return txtTest.Text; }   
  }

在父页面中,我们可以获取用户控件的实例并获取文本框的值,如

foreach (RepeaterItem itm in rptAttribute.Items)
{     
 MyUserControl uc = ((MyUserControlitemUserControl)itm.FindControl("MyContorlName"));
 string  test = uc.MyString;
}

但不确定如果用户控件中的文本框以编程方式创建,则如何呈现值。

1 个答案:

答案 0 :(得分:0)

您可以对文本框采用类似的方法,但声明一个公共方法,该方法将文本框名称作为参数,然后像这样返回:

在您的ASCX中:

public TextBox GetDynamicTextBoxByID(string textBoxId)
{
  return (TextBox)Page.FindControl(textBoxId);
}

在您的父页面中:

foreach (RepeaterItem itm in rptAttribute.Items)
{     
 MyUserControl uc = ((MyUserControlitemUserControl)itm.FindControl("MyContorlName"));
 string  test = uc.MyString;
 TextBox tx = uc.GetDynamicTextBoxByID(idOfTextBox);
}

不要忘记检查是否返回null并正确处理。