2011-12-09 107 views
5

He intentado que esto funcione durante un par de horas pero nada de google podría ayudarme a solucionar el problema.obtener valor del cuadro de texto dentro de repeater asp.net C#

Tengo un muy simple control del repetidor:

<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> 

el panel userDefDiv está dentro de otro panel, que se encuentra dentro de ContentPlaceHolder. el panel padre a userDefDiv NO tiene el "enableviewstate =" false "".

So. Todo en esta página ocurre después de un par de linkbuttons_click. así que no ocurre nada durante page_load. Y después de hacer clic en otro botón de enlace, quiero obtener los datos de los diferentes cuadros de texto que están dentro del repetidor.

código C#:

Este es el código para crear todos los elementos del repetidor.

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

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

El código para el 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 + " . "; 
    } 
} 

Como se puede ver i crear el repetidor, una vez más durante el clic. Pero lo único que puedo leer en label2. es una cantidad de ".", en punto para cada cuadro de texto. pero el texto del cuadro de texto está vacío. ¿Qué estoy haciendo mal?

gracias por leerlo! Mattias

SOLUCIÓN:

  1. añadir EnableViewState = "true" al cuadro de texto & repetidor.

  2. No llame a dataBind() antes de obtener los valores.

Gracias!

Respuesta

4

Es necesario configurar EnableViewState a 'verdadero' para linkbuttons para que funcione correctamente en un repetidor

+0

no hay LinkButton en el repetidor. el botón de enlace está fuera del panel userDefDiv. – Easyrider

+1

Oh, ya veo, me engañó el nombre del método de clic. De todos modos, la misma respuesta debería funcionar. Los valores de los cuadros de texto dentro de un repetidor no estarán disponibles en un poastback a menos que EnableViewState = true. – Ray

+0

No funciona. – Easyrider

Cuestiones relacionadas