none
bucle con Panel por cada row de un DataSet RRS feed

  • Pregunta

  • Hola Grupo!

    tengo una duda a la hora de plantear un bucle para mostrar un nuevo panel por cada row de de un data Set.

    me explico con código

    Page.aspx:

                                    

     <asp:Panel runat="server" ID="Panel1">   
                                    <div id="mensaje_ID" runat="server">
                                <div class="row">

    .... mas código.....
                                     </div>
                                         </div>
                                     </asp:Panel>

    CodeBehind aspx.vb

     For Each mifila In BD.EjecutaSQL(consulta).Rows
                txVCemail.Text = mifila("DE")
                txVCadjunto.Text = mifila("ADJUNTO")
                txVCcuerpo_mensaje.Text = mifila("MENSAJE")
                txVCusuario.Text = Trim(mifila("USUARIO"))
                txVCfalta.Text = mifila("FECHA")

    hasta aquí puedo recoger toda la información....

     ahora quiero mostrar por cada mifila del datarow un nuevo <asp:panel>

     y me sale este error

    For i As Integer = 1 To mifila 

    La conversión del tipo 'DataRow' en el tipo 'Integer' no es válida.'
                    Dim panel As Panel = FindControl("Panel1")
                    mensaje_ID.Controls.Add(panel)
                Next

    Next

    se que lo estoy declarando mal pq en este caso, cuando paro el código me recorre 3 items, osea 3 veces me pasa por el primer bucle pero luego no me muestra un panel por cada 1.

    muchas gracias y perdonad si el lenguaje técnico no es el apropiado


    jueves, 27 de junio de 2019 9:12

Todas las respuestas

  • For i As Integer = 1 To mifila 

    La conversión del tipo 'DataRow' en el tipo 'Integer' no es válida.'

    Explicacion del error:

    El "For I As Integer" exige que se especifique un integer como valor de inicio y fin que se asigna a la I.

    Pero el valor de fin que has puesto es "mifila", que no es un numero sino un DataRow, si te fijas mas arriba en el codigo.

    Seguramente los que querias era algo similar a esto:

    For I As Integer = 1 To  BD.EjecutaSQL(consulta).Rows.Count

    Pero aunque eso resolvera este error concreto, tu programa no funcionara. No se puede hacer lo que haces mas abajo, que es buscar un panel existente y luego agregarlo varias veces a una coleccion Controls. Un control dado, tal como un Panel, solo se puede agregar una unica vez a una unica coleccion de controles. Asi que tendras que replantear lo que estas haciendo. Tal como lo tienes pensado no puede funcionar.

    jueves, 27 de junio de 2019 9:33
  • muchas gracias Alberto por tu respuesta!

    intentaré replantear el código.

    saludos.

    viernes, 28 de junio de 2019 9:53