¿Cómo agregar una nueva fila de la tabla ASP.NET haciendo clic en el botón?

Estoy usando asp.net [c #] ..

Mi pregunta es acerca de agregar nueva fila; si hago clic en ese botón (como cada vez que hago clic en ese botón, agregaré una nueva fila) .. Pensé que es fácil hacerlo … pero no está ahí. Falta algo, no sé qué.

Mi código es [Default3.aspx]:

        

y para mi C # [Default3.aspx.cs]:

 protected void Button1_Click(object sender, EventArgs e) { TableRow NewRow1 = new TableRow(); //1st cell TableCell NewCell1 = new TableCell(); NewCell1.Style.Add("border-style","solid"); // new lebel Label newLable1 = new Label(); count = count + 1; // just for change number in label text newLable1.Text = "NewLabel = "+ count; // adding lebel into cell NewCell1.Controls.Add(newLable1); // adding cells to row NewRow1.Cells.Add(NewCell1); //2ed cell TableCell NewCell2 = new TableCell(); NewCell2.Style.Add("border-style", "solid"); Label newLable2 = new Label(); count = count + 1; newLable2.Text = "NewLabel = " + count; NewCell2.Controls.Add(newLable2); NewRow1.Cells.Add(NewCell2); //adding row into table Table1.Rows.Add(NewRow1); } 

No sé cuál es el problema … incluso le doy a cada uno de los controles una identificación … y probé de otras maneras pero no funcionó …

Por favor, si alguien puede ayudarme … siento que me falta algo importante pero no sé qué es …

Como se indica en la pregunta compartida en la respuesta de Walid , siga estos pasos:

  1. Crea una lista global de filas de tablas, algo como:

     List TableRows 
  2. En el botón haga clic en Agregar la fila recién creada a la lista:

     TableRow row1=new TableRow(); TableRows.add(row1); 
  3. En el método OnInit , simplemente agregue todas las filas a la tabla:

     foreach ( TableRow row in TableRows ) { Table1.Rows.Add(row); } 

Solucionará tu problema.

Deberá persistir el estado de su control (tabla).

Vea una explicación clara de un problema muy similar aquí. ASP.NET controles dynamics creados y Postback

Puedes agregar una fila simplemente usando:

 TableRow row1=new TableRow(); TableRows.add(row1); 

Pero la preocupación es:

  1. Al hacer clic en el botón, se agrega una fila a la tabla.
  2. Al hacer clic nuevamente en el mismo botón, la primera fila que ya ha creado ya no se mantiene, ya que ASP.NET no tiene estado.

Solución: asegúrese de que en cada clic de botón, existan los datos de sus filas ya creadas.