none
Crear tabla dinamicamente RRS feed

  • Pregunta

  • Buenas,

    Estoy intentando crear una tabla dinamicamente en vb.net, el cual tiene dos columnas que a veces tendrán textbox, pero lo que me ocurre es sólo me crea el textbox en la última línea y no en todas. No sé porqué ocurre esto. Me podeis ayudar?

    A continuación os pongo el código:

    Public Shared Function DividirLineasTarifa(ByRef mensaje As String, ByVal tblTarifas As Table)
            Dim arrayVariables As String()
            Dim arrayElementos As String()
            Dim capitulo As Integer
            Dim capitulo_ant As Integer = 0
            Dim Variable As String
            Dim SbCadena_lineas_tarifa As String
            Dim texto As String
            Dim precio As Double = 0
            Dim precString As String
            Dim valor As Double
            Dim descuento As New TextBox
            Dim pvp As New TextBox
            ' Objeto fila
            Dim objRow As TableRow
            ' Objeto columna
            Dim objCell1, objCell2, objCell3, objCell4, objCell5 As TableCell

            SbCadena_lineas_tarifa = ObtenerCadenaLineaTarifa(mensaje)

            If (SbCadena_lineas_tarifa Is Nothing) Then
                mensaje = "La oferta no tiene lineas de tarifa"
            Else
                'separo en un array de strings los valores que me devuelve la dll
                arrayVariables = SbCadena_lineas_tarifa.Split(sep_var)
                'Recorro el array
                For Each Variable In arrayVariables
                    arrayElementos = Variable.Split("|")
                    If Not (arrayElementos(0).Equals("")) Then
                        ' Inicializamos el objeto fila
                        objRow = New TableRow
                        capitulo = arrayElementos(0)
                        If (capitulo = 0) Then
                            'ir sumando los precios
                            precio = precio + CDbl(arrayElementos(3))
                        Else
                            'EscribirCapitulos(capitulo, capitulo_ant, precio, tblTarifas)
                            'Codigo
                            objCell1 = New TableCell
                            objCell1.Text = arrayElementos(1)
                            objCell1.CssClass = "txtPrecio"
                            objRow.Cells.Add(objCell1)
                            'Descripción
                            objCell2 = New TableCell
                            objCell2.Text = arrayElementos(2)
                            objCell2.CssClass = "txtPrecio"
                            objRow.Cells.Add(objCell2)

                            'ir sumando los precios
                            precio = precio + CDbl(arrayElementos(3))
                            objCell3 = New TableCell
                            valor = arrayElementos(3)
                            precString = Format(valor, "#,##0.00")
                            objCell3.Text = precString
                            objCell3.CssClass = "txtPrecio"
                            objRow.Cells.Add(objCell3)
                            objCell4 = New TableCell
                            descuento.CssClass = "txtPrecio"
                            objCell4.Controls.Add(descuento)
                            objRow.Cells.Add(objCell4)
                            objCell5 = New TableCell
                            pvp.CssClass = "txtPrecio"
                            objCell5.Controls.Add(pvp)
                            objRow.Cells.Add(objCell5)
                            tblTarifas.Rows.Add(objRow)
                          

                        End If
                    End If
                Next
                texto = "Precio Total Accesorios"
                'EscribirPreciosTotales(tblTarifas, texto, precio)

            End If
            Return SbCadena_lineas_tarifa
        End Function

    Gracias de antemano.

    martes, 22 de junio de 2010 7:22

Respuestas

  • hola ,

    que tal bueno estube buscando por ahi unos enlaces que te puedan ayudar , espero que te ayude

    http://www.es-asp.net/foro/principiantes/7711/crear-tabla-dinamica.aspx

    este ultimo esta en c# jaja  , pero es entendible

    http://geeks.ms/blogs/sergio/archive/2008/05/23/como-crear-una-tabla-dinamicamente-desde-el-servidor-con-asp-net.aspx

     

    enmanuel grullard

    republica dominicana

     

    • Marcado como respuesta nere_neria martes, 22 de junio de 2010 13:16
    martes, 22 de junio de 2010 12:43
    Moderador
  • Gracias, ya tenía vistos esos enlaces pero con lo que me has dicho de que no creaba los textbox tenías razón, solo los creaba una vez, por eso no me funcionaba.

    Me he dado cuenta y lo he solucionado. Así quedaría el código:

    Public

     

    Shared Function DividirLineasTarifa(ByRef mensaje As String, ByVal tblTarifas As Table)

     

    Dim arrayVariables As String()

     

    Dim arrayElementos As String()

     

    Dim capitulo As Integer

     

    Dim capitulo_ant As Integer = 0

     

    Dim Variable As String

     

    Dim SbCadena_lineas_tarifa As String

     

    Dim texto As String

     

    Dim precio As Double = 0

     

    Dim precString As String

     

    Dim valor As Double

     

    Dim descuento As TextBox

     

    Dim pvp As TextBox

     

    ' Objeto fila

     

    Dim objRow As TableRow

     

    ' Objeto columna

     

    Dim objCell1, objCell2, objCell3, objCell4, objCell5 As TableCell

    SbCadena_lineas_tarifa = ObtenerCadenaLineaTarifa(mensaje)

     

    If (SbCadena_lineas_tarifa Is Nothing) Then

    mensaje =

    "La oferta no tiene lineas de tarifa"

     

    Else

     

    'separo en un array de strings los valores que me devuelve la dll

    arrayVariables = SbCadena_lineas_tarifa.Split(sep_var)

     

    'Recorro el array

     

    For Each Variable In arrayVariables

    arrayElementos = Variable.Split(

    "|")

     

    If Not (arrayElementos(0).Equals("")) Then

     

    ' Inicializamos el objeto fila

    objRow =

    New TableRow

    capitulo = arrayElementos(0)

     

    If (capitulo = 0) Then

     

    'ir sumando los precios

    precio = precio +

    CDbl(arrayElementos(3))

     

    Else

    EscribirCapitulos(capitulo, capitulo_ant, precio, tblTarifas)

     

    'Codigo

    objCell1 =

    New TableCell

    objCell1.Text = arrayElementos(1)

    objRow.Cells.Add(objCell1)

     

    'Descripcin

    objCell2 =

    New TableCell

    objCell2.Text = arrayElementos(2)

    objRow.Cells.Add(objCell2)

     

    'ir sumando los precios

    precio = precio +

    CDbl(arrayElementos(3))

     

    If (capitulo <> 1) Then

    objCell3 =

    New TableCell

    valor = arrayElementos(3)

    precString = Format(valor,

    "#,###.##")

    objCell3.Text = precString

    objRow.Cells.Add(objCell3)

    objCell4 =

    New TableCell

    descuento =

    New TextBox

    descuento.CssClass =

    "txtPrecio"

    objCell4.Controls.Add(descuento)

    objRow.Cells.Add(objCell4)

    objCell5 =

    New TableCell

    pvp =

    New TextBox

    pvp.CssClass =

    "txtPrecio"

    objCell5.Controls.Add(pvp)

    objRow.Cells.Add(objCell5)

     

    Else

    objCell3 =

    New TableCell

    objCell3.Text =

    ""

    objRow.Cells.Add(objCell3)

    objCell4 =

    New TableCell

    objCell4.Text =

    ""

    objRow.Cells.Add(objCell4)

    objCell5 =

    New TableCell

    objCell5.Text =

    ""

    objRow.Cells.Add(objCell5)

     

    End If

    tblTarifas.Rows.Add(objRow)

    objCell1 =

    Nothing

    objCell2 =

    Nothing

    objCell3 =

    Nothing

    objCell4 =

    Nothing

    objCell5 =

    Nothing

     

    End If

     

    End If

     

    Next

    texto =

    "Precio Total Accesorios"

    EscribirPreciosTotales(tblTarifas, texto, precio)

     

    End If

     

    Return SbCadena_lineas_tarifa

     

    End Function

    • Marcado como respuesta nere_neria martes, 22 de junio de 2010 13:16
    martes, 22 de junio de 2010 13:15

Todas las respuestas

  • hola

    el tema es que no veo qeu incluyas controles de TextBox en las celdas, si estas asignando un estilo del tipode un control, o al menso el nombre

    objCell1.CssClass = "txtPrecio"

    pero no creas el control

    algo como esto

    objCell1 = New TableCell

    Dim txtPrecio As New TextBox
    txtPrecio.Text = arrayElementos(1)
    objCell1.Controls.Add(txtPrecio)


    objRow.Cells.Add(objCell1)

    veras que alli si estas incluyendo un control TexBox en la celda

    saludos


    Leandro Tuttini

    Blog
    Buenos Aires
    Argentina
    martes, 22 de junio de 2010 12:42
  • hola ,

    que tal bueno estube buscando por ahi unos enlaces que te puedan ayudar , espero que te ayude

    http://www.es-asp.net/foro/principiantes/7711/crear-tabla-dinamica.aspx

    este ultimo esta en c# jaja  , pero es entendible

    http://geeks.ms/blogs/sergio/archive/2008/05/23/como-crear-una-tabla-dinamicamente-desde-el-servidor-con-asp-net.aspx

     

    enmanuel grullard

    republica dominicana

     

    • Marcado como respuesta nere_neria martes, 22 de junio de 2010 13:16
    martes, 22 de junio de 2010 12:43
    Moderador
  • Gracias, ya tenía vistos esos enlaces pero con lo que me has dicho de que no creaba los textbox tenías razón, solo los creaba una vez, por eso no me funcionaba.

    Me he dado cuenta y lo he solucionado. Así quedaría el código:

    Public

     

    Shared Function DividirLineasTarifa(ByRef mensaje As String, ByVal tblTarifas As Table)

     

    Dim arrayVariables As String()

     

    Dim arrayElementos As String()

     

    Dim capitulo As Integer

     

    Dim capitulo_ant As Integer = 0

     

    Dim Variable As String

     

    Dim SbCadena_lineas_tarifa As String

     

    Dim texto As String

     

    Dim precio As Double = 0

     

    Dim precString As String

     

    Dim valor As Double

     

    Dim descuento As TextBox

     

    Dim pvp As TextBox

     

    ' Objeto fila

     

    Dim objRow As TableRow

     

    ' Objeto columna

     

    Dim objCell1, objCell2, objCell3, objCell4, objCell5 As TableCell

    SbCadena_lineas_tarifa = ObtenerCadenaLineaTarifa(mensaje)

     

    If (SbCadena_lineas_tarifa Is Nothing) Then

    mensaje =

    "La oferta no tiene lineas de tarifa"

     

    Else

     

    'separo en un array de strings los valores que me devuelve la dll

    arrayVariables = SbCadena_lineas_tarifa.Split(sep_var)

     

    'Recorro el array

     

    For Each Variable In arrayVariables

    arrayElementos = Variable.Split(

    "|")

     

    If Not (arrayElementos(0).Equals("")) Then

     

    ' Inicializamos el objeto fila

    objRow =

    New TableRow

    capitulo = arrayElementos(0)

     

    If (capitulo = 0) Then

     

    'ir sumando los precios

    precio = precio +

    CDbl(arrayElementos(3))

     

    Else

    EscribirCapitulos(capitulo, capitulo_ant, precio, tblTarifas)

     

    'Codigo

    objCell1 =

    New TableCell

    objCell1.Text = arrayElementos(1)

    objRow.Cells.Add(objCell1)

     

    'Descripcin

    objCell2 =

    New TableCell

    objCell2.Text = arrayElementos(2)

    objRow.Cells.Add(objCell2)

     

    'ir sumando los precios

    precio = precio +

    CDbl(arrayElementos(3))

     

    If (capitulo <> 1) Then

    objCell3 =

    New TableCell

    valor = arrayElementos(3)

    precString = Format(valor,

    "#,###.##")

    objCell3.Text = precString

    objRow.Cells.Add(objCell3)

    objCell4 =

    New TableCell

    descuento =

    New TextBox

    descuento.CssClass =

    "txtPrecio"

    objCell4.Controls.Add(descuento)

    objRow.Cells.Add(objCell4)

    objCell5 =

    New TableCell

    pvp =

    New TextBox

    pvp.CssClass =

    "txtPrecio"

    objCell5.Controls.Add(pvp)

    objRow.Cells.Add(objCell5)

     

    Else

    objCell3 =

    New TableCell

    objCell3.Text =

    ""

    objRow.Cells.Add(objCell3)

    objCell4 =

    New TableCell

    objCell4.Text =

    ""

    objRow.Cells.Add(objCell4)

    objCell5 =

    New TableCell

    objCell5.Text =

    ""

    objRow.Cells.Add(objCell5)

     

    End If

    tblTarifas.Rows.Add(objRow)

    objCell1 =

    Nothing

    objCell2 =

    Nothing

    objCell3 =

    Nothing

    objCell4 =

    Nothing

    objCell5 =

    Nothing

     

    End If

     

    End If

     

    Next

    texto =

    "Precio Total Accesorios"

    EscribirPreciosTotales(tblTarifas, texto, precio)

     

    End If

     

    Return SbCadena_lineas_tarifa

     

    End Function

    • Marcado como respuesta nere_neria martes, 22 de junio de 2010 13:16
    martes, 22 de junio de 2010 13:15