A partir de un DataTable genero controles TextBox y los añado dinámicamente a la página. Los valores se cargan bien en todos los controles pero al estar generados dinámicamente no consigo recuperar los textos modificados. Pongo el código para cargar los controles:
Código:
Y luego intento recuperar los nuevos valores así:Dim tabla As New Table With tabla .HorizontalAlign = HorizontalAlign.Center .CellSpacing = 15 End With Dim controlesPreguntas(dtPreguntas.Rows.Count) As String Dim controlesOrden(dtPreguntas.Rows.Count) As String For i As Integer = 0 To dtPreguntas.Rows.Count - 1 Dim fila As New TableRow Dim celdaOrden As New TableCell celdaOrden.VerticalAlign = VerticalAlign.Top Dim celdaPregunta As New TableCell celdaPregunta.VerticalAlign = VerticalAlign.Top Dim txtOrden As New TextBox With txtOrden .Rows = 1 .Columns = 1 .MaxLength = 2 .Text = dtPreguntas.Rows(i).Item("orden") .ID = "orden_" & i End With controlesOrden.SetValue(txtOrden.ClientID, i) celdaOrden.Controls.Add(txtOrden) fila.Cells.Add(celdaOrden) Dim txtPregunta As New TextBox With txtPregunta .TextMode = TextBoxMode.MultiLine .Rows = 3 .Columns = 100 .MaxLength = 600 .Text = dtPreguntas.Rows(i).Item("pregunta") .ID = "pregunta_" & i End With celdaPregunta.Controls.Add(txtPregunta) fila.Cells.Add(celdaPregunta) tabla.Rows.Add(fila) Next Me.phPreguntas.Controls.Add(tabla) Session("numControles") = controlesOrden.Length
Código:
Y la línea en rojo da el siguiente error: Object reference not set to an instance of an object.Dim numControles As Integer = Session("numControles") Dim txtOrden As New TextBox Dim txtPregunta As New TextBox Dim i As Integer For i = 0 To numControles - 1 txtOrden = FindControl("orden_" & i) Response.Write(txtOrden.Text) Next
¿Alguna idea?