Ver Mensaje Individual
  #1 (permalink)  
Antiguo 15/03/2013, 14:46
Avatar de madeleyn66
madeleyn66
 
Fecha de Ingreso: marzo-2013
Ubicación: Lima
Mensajes: 1
Antigüedad: 11 años, 1 mes
Puntos: 0
Mensaje Crear contro tabla asp.net de forma dinamica y recuperar sus valores

Hola chicos, soy nueva en programacion y por tal motivo necesito ayuda en este caso, ya que mi busqueda de la solucion me esta tomando mucho tiempo. Si alguien podria ayudarme por favor, se lo agradecere mucho.

Me sale el siguiente error: El control txtTipo1 de tipo TextBox debe colocarse dentro de una etiqueta de formulario con runat = server

al momento de crear la tabla dinámicamente. Por otro lado, si quito la lógica del Page_PreRender logro crear la tabla dinámicamente, pero no logro recuperar los valores al ir nuevamente al servidor (se pierden), trate de buscar ayuda en unos foros y me sugirieron usar viewstate pero al momento de usarlo me sale también error de que que el control Table debe ser serializable.

Lo que necesito es crear dinámicamente mi tabla, y después recuperar los valores.

private void Page_PreRender(object sender, EventArgs e)
{
// Save PageArrayList before the page is rendered.
Page page = new System.Web.UI.Page();
HtmlForm form = new HtmlForm();

page.Controls.Add(form);
form.Controls.Add(tablaServidor);

System.IO.StringWriter sw = new System.IO.StringWriter();

HtmlTextWriter tw = new HtmlTextWriter(sw);

page.Form.FindControl("tablaServidor").RenderContr ol(tw);

ViewState["tablaServidor"] = sw.ToString();

}

private void crearTablaServidor()
{

int contador = 1;

while (contador <= 5)
{

TableRow row = new TableRow(); // creamos la fila

TableCell cell_1 = new TableCell(); // creamos las columnas (celda)
TableCell cell_2 = new TableCell(); // creamos las columnas (celda)
TableCell cell_3 = new TableCell(); // creamos las columnas (celda)

TextBox newTxt1 = new TextBox(); // creamos el control TextBox
newTxt1.ID = "txtTipo" + contador; // añadimos un ID al control
newTxt1.Text = contador.ToString(); // añadimos un valor por defecto
newTxt1.Attributes.Add("runat", "server");

TextBox newTxt2 = new TextBox();
newTxt2.ID = "txtReferencia" + contador;
newTxt2.Text = contador.ToString();
newTxt2.Attributes.Add("runat", "server");

TextBox newTxt3 = new TextBox();
newTxt3.ID = "txtMonto" + contador;
newTxt3.Text = contador.ToString();
newTxt3.Attributes.Add("runat", "server");

cell_1.ID = "celdaA" + contador;
cell_2.ID = "celdaB" + contador;
cell_3.ID = "celdaC" + contador;

cell_1.Attributes.Add("runat", "server");
cell_2.Attributes.Add("runat", "server");
cell_3.Attributes.Add("runat", "server");

cell_1.Controls.Add(newTxt1); // añadimos el TextBox a la Celda
cell_2.Controls.Add(newTxt2);
cell_3.Controls.Add(newTxt3);

row.ID = "filaA" + contador;
row.Attributes.Add("runat", "server");
row.Cells.Add(cell_1); // añadimos cada celda a la fila
row.Cells.Add(cell_2);
row.Cells.Add(cell_3);


Table xxx = (Table)Page.Form.FindControl("tablaServidor");
xxx.Rows.Add(row);
// tablaServidor.Rows.Add(row); //añado la fila a la tabla

contador = contador + 1;
}




Gracias

Última edición por madeleyn66; 15/03/2013 a las 14:56