Как получить все значения TextBox из Repeater, который содержит UserControls? - PullRequest
4 голосов
/ 01 февраля 2012

У меня есть один TextBox внутри UserControl, и этот UserControl повторяется внутри Repeater.Но когда пользователь заполняет значения TextBox, и после этого я не могу получить значения из TextBox s.

default.aspx:

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

При button1 нажмите Iпытаюсь заполнить List<string> значениями от textbox.text s

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 Ответ

4 голосов
/ 01 февраля 2012

Вы должны зациклить все элементы ретранслятора и использовать FindControl, чтобы найти свой пользовательский элемент управления, а затем вызвать метод getString в таких найденных экземплярах, псевдокод (не тестировался):

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

  if(itemUserControl  != null)
  {
    var itemText = itemUserControl.getString();
  }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...