locked
VB.NET 2019 - Subtotales en ListView RRS feed

  • Pregunta

  • Estimados

    Tengo este código para llenar un ListView y que además, los agrupa según la habitación. El problema que no he podido agregar la línea del subtotal, al momento de finalizar las filas del grupo:

    For Each fila As DataRow In oDataBuscar.Rows()
    
                    item = lvDetalle.Items.Add(fila("HABCOD"))
                    item.Tag = fila
    
                    oSub1 = oDataBuscar.Compute("Sum(VALOR)", "HAB = '" & fila("HAB").ToString & "'")
    
                    If fila("HAB") <> grupoActual Then
                        lvGroup = New ListViewGroup(fila("HABCOD") & Space(2) & fila("HAB"))
                        grupoActual = fila("HAB")
                        lvDetalle.Groups.Add(lvGroup)
                    End If
    
                    item.SubItems.Add(If(fila("FOLIO") = 0, "-", fila("FOLIO")))
                    item.SubItems.Add(If(fila("INGRESO") = "00:00", "-", fila("INGRESO")))
                    item.SubItems.Add(If(fila("SALIDA") = "00:00", "-", fila("SALIDA")))
                    item.SubItems.Add(If(fila("VALOR") = 0, "-", FormatNumber(CDbl(fila("VALOR")), 0)))
    
                    item.Group = lvGroup
                Next
    
                item = lvDetalle.Items.Add("")
                item.ForeColor = Color.DarkBlue
                item.SubItems.Add("SUB-TOTAL")
                item.SubItems.Add("")
                item.SubItems.Add("")
                item.SubItems.Add(IIf(CDbl(oSub1) = 0, "-", FormatNumber(CDbl(oSub1), 0)))

    jueves, 30 de marzo de 2023 0:34

Respuestas

  • Para resolverlo, tuve que comparar la venta total con la suma acumulada en el ciclo For y signar un IF para validar si total = suma then y agregar una línea manual al Listview.

    Adjunto el código, por si alguien le sea de ayuda:

     If oSub1 = Total Then
    
                        item = lvFPago.Items.Add("TOTALES")
                        item.ForeColor = Color.DarkBlue
                        item.Font = New Font(item.Font, FontStyle.Regular)
                        item.SubItems.Add(String.Empty)
                        item.SubItems.Add("SUB-TOTAL")
                        item.SubItems.Add(IIf(CInt(Total) = 0, "-", FormatNumber(CInt(Total), 0)))
                        item.SubItems.Add(If(oPorc1 = 0, "-", 
    
                        item.Group = lvGroup
    
                        Total = 0
                 End If

    • Marcado como respuesta Marco Elgueta miércoles, 5 de abril de 2023 17:34
    miércoles, 5 de abril de 2023 17:34

Todas las respuestas

  • Hola Marco Elgueta,

    Gracias hacer la consulta en los foros de MSDN, en este momento vamos a investigar tu caso y tendremos noticias lo mas pronto posible.

    Si hay alguna otra información adicional que guste adjuntar al problema nos lo puedes hacer saber.

    Benjamin G,


    Recuerde "marcar como respuesta" las respuestas que resolvieron su problema, es una forma común de reconocer a quienes ayudaron y facilita que otros visitantes encuentren la solución más adelante.

    Si tiene algún cumplido o queja sobre el soporte técnico de MSDN, no dude en ponerse en contacto con MSDNFSF@microsoft.com

    viernes, 31 de marzo de 2023 2:29
    Moderador
  • Para resolverlo, tuve que comparar la venta total con la suma acumulada en el ciclo For y signar un IF para validar si total = suma then y agregar una línea manual al Listview.

    Adjunto el código, por si alguien le sea de ayuda:

     If oSub1 = Total Then
    
                        item = lvFPago.Items.Add("TOTALES")
                        item.ForeColor = Color.DarkBlue
                        item.Font = New Font(item.Font, FontStyle.Regular)
                        item.SubItems.Add(String.Empty)
                        item.SubItems.Add("SUB-TOTAL")
                        item.SubItems.Add(IIf(CInt(Total) = 0, "-", FormatNumber(CInt(Total), 0)))
                        item.SubItems.Add(If(oPorc1 = 0, "-", 
    
                        item.Group = lvGroup
    
                        Total = 0
                 End If

    • Marcado como respuesta Marco Elgueta miércoles, 5 de abril de 2023 17:34
    miércoles, 5 de abril de 2023 17:34