Foros del Web

Foros del Web (http://www.forosdelweb.com/)
-   .NET (http://www.forosdelweb.com/f29/)
-   -   Recuperar valores de controles generados dinámicamente (http://www.forosdelweb.com/f29/recuperar-valores-controles-generados-dinamicamente-311340/)

Bravenap 27/06/2005 04:50

Recuperar valores de controles generados dinámicamente
 
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?

Bravenap 27/06/2005 05:12

Bueno, no era lo que pretendía pero al menos he conseguido resolverlo de esta sencillísima manera:

Código:

        Dim numControles As Integer = Session("numControles")
        Dim insOrden(numControles) As String
        Dim insPreguntas(numControles) As String
        Dim i As Integer
        For i = 0 To numControles - 1
            insOrden.SetValue(Request.Form("orden_" & i), i)
            insPreguntas.SetValue(Request.Form("pregunta_" & i), i)
        Next

Gracias y un saludo.


La zona horaria es GMT -6. Ahora son las 10:24.

Desarrollado por vBulletin® Versión 3.8.7
Derechos de Autor ©2000 - 2026, Jelsoft Enterprises Ltd.