2012-02-01 3 views
4

J'ai un TextBox à l'intérieur d'un UserControl, et ce UserControl se répète à l'intérieur Repeater. Mais, lorsque l'utilisateur remplit TextBox avec des valeurs et après cela, je ne peux pas obtenir des valeurs de TextBox s.Comment obtenir toutes les valeurs TextBox de Repeater contenant UserControls?

default.aspx:

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

Sur button1 cliquez sur Je suis en train de remplir List<string> avec des valeurs de textbox.text de

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); 
     } 
    } 
} 

Et UserControl code:

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

protected void Page_Load(object sender, EventArgs e) 
{ 

} 

Répondre

4

vous devriez boucle sur tous les éléments du répéteur et utilisez FindControl pour trouver votre contrôle utilisateur puis appeler la méthode getString sur des instances telles trouvé, pseudo-code (non testé):

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

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

+1 pour ne pas en boucle si tous les contrôles dans les 'RepeaterItem's = inutilement) – jadarnel27

+0

J'ai un problème similaire en accédant à une zone de texte à l'intérieur d'un contrôle utilisateur qui à son tour est à l'intérieur d'un répéteur. Comment puis-je référencer la zone de texte à partir du contrôle utilisateur lui-même? Je peux référencer des étiquettes et changer leur texte mais de toute façon je ne peux pas lire des boîtes de texte. – Osprey

Questions connexes