2011-12-09 4 views
5

J'ai essayé de faire fonctionner cela pendant quelques heures maintenant, mais rien de google pourrait m'aider à résoudre le problème.obtenir la valeur de la zone de texte au sein de répéteur asp.net C#

J'ai un contrôle répéteur très simple:

<asp:Panel ID="userDefDiv" Visible="false" runat="server"> 
       <asp:Repeater ID="userDefRepeater" EnableViewstate="false" runat="server"> 
        <ItemTemplate> 
         <asp:TextBox ID="TextBox1" runat="server" EnableViewState="false"></asp:TextBox><br/> 
        </ItemTemplate> 
       </asp:Repeater> 
      </asp:Panel> 

le panneau userDefDiv se trouve dans un autre panneau, qui est à l'intérieur ContentPlaceHolder. le panneau parent à userDefDiv n'a pas le "enableviewstate =" false "".

Donc. Tout sur cette page se passe après un couple de linkbuttons_click. donc rien ne se passe pendant le chargement de la page. Et après avoir cliqué sur un autre bouton, je veux obtenir les données des différentes zones de texte qui se trouvent dans le répéteur.

code C#:

Ceci est le code pour créer tous les éléments de répéteur.

public void createUserDef() 
{ 
     DataTable userDefData; 
     userDefData = ..... (data from Database.) 

      userDefDiv.Visible = true; 
      userDefRepeater.DataSource = userDefData; 
      userDefRepeater.DataBind(); 
} 

Le code pour le linkbutton:

protected void linkButton_Click(object sender, EventArgs e) 
{ 
    createUserDef(); 

    Label2.Visible = true; 
    foreach (RepeaterItem item in userDefRepeater.Items) 
    { 
     TextBox box = (TextBox)item.FindControl("TextBox1"); 
     string b = box.Text; 
     Label2.Text += b + " . "; 
    } 
} 

Comme vous le voyez je crée le répéteur une fois de plus pendant le clic. Mais la seule chose que je peux lire dans label2. est un nombre de ".", sur le point pour chaque zone de texte. mais le texte de la zone de texte est vide .. Qu'est-ce que je fais mal ??

merci de votre lecture! Mattias

SOLUTION:

  1. ajouter enableViewState = "true" à répétition textbox &. N'appelez pas appelez dataBind() avant d'obtenir les valeurs.

Merci!

Répondre

4

Vous devez définir EnableViewState « true » pour linkbuttons fonctionne correctement dans un répéteur

+0

il n'y a pas linkbutton dans le répéteur. le bouton link est en dehors du panneau userDefDiv. – Easyrider

+1

Oh, je vois - j'ai été dupé par le nom de la méthode de clic. Quoi qu'il en soit, la même réponse devrait fonctionner. Les valeurs des zones de texte dans un répéteur ne seront pas disponibles sur un Poastback à moins que EnableViewState = true. – Ray

+0

Ça ne marche pas. – Easyrider

Questions connexes