Hola, muy buenas.
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:
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
Y luego intento recuperar los nuevos valores así:
Código:
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
Y la línea en rojo da el siguiente error:
Object reference not set to an instance of an object.
¿Alguna idea?