2012-02-01 47 views
4

我有一個TextBoxUserControl之內,而UserControlRepeater之內重複。 但是,當用戶用值填充TextBox,之後我無法從TextBox s獲取值。如何從包含UserControls的Repeater獲取所有TextBox值?

的Default.aspx:

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

button1點擊我試圖從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代碼值來填充List<string>

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

protected void Page_Load(object sender, EventArgs e) 
{ 

} 

回答

4

你應該循環所有中繼器的項目並使用FindControl找到然後用戶控件調用getString方法對這種發現的情況下,僞代碼(未測試):

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

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

1爲在'RepeaterItem's不循環雖然所有的控制不必要=) – jadarnel27 2012-02-01 15:46:18

+0

我有一個類似的問題訪問一個用戶控件內的文本框,而這又是一箇中繼器。我如何從用戶控件本身引用文本框?我可以引用標籤並更改文本,但不知何故我無法從文本框中讀取。 – Osprey 2013-10-27 06:16:10