如何从包含UserControls的Repeater获取所有TextBox值?

时间:2012-02-01 15:21:37

标签: asp.net user-controls repeater

我在TextBox中有一个UserControl,而UserControlRepeater内重复。 但是,当用户使用值填充TextBox时,我无法从TextBox获取值。

的Default.aspx:

protected void Page_Load(object sender, EventArgs e)
{
    //filling repeater with dataset
    Repeater1.DataSource = ds;
    Repeater1.DataBind();
}

点击button1点击我正在尝试使用List<string> s

中的值填充textbox.text
protected void Button1_Click(object sender, EventArgs e)
{
    List<string> sss = new List<string>();
    foreach (Control i in Repeater1.Controls)
    {
        foreach (Control item in i.Controls)
        {
            if (item is WebUserControl1)
                sss.Add(((WebUserControl1)item).getString);
        }
     }
}

UserControl代码:

public string getString
 {
     get
     { return TextBox1.Text; }
 }

 protected void Page_Load(object sender, EventArgs e)
 {

 }

1 个答案:

答案 0 :(得分:4)

你应该遍历所有转发器的项目并使用FindControl找到你的用户控件然后在这样的找到的实例上调用getString方法,伪代码(未测试) :

foreach(var rptItem in Repeater1.Items)
{
  WebUserControl1 itemUserControl = ((WebUserControl1)rptItem .FindControl("WebUserControl1"))

  if(itemUserControl  != null)
  {
    var itemText = itemUserControl.getString();
  }
}