none
Llenar un ListView de un DataSet RRS feed

  • Pregunta

  • Hola, les comento que no soy muy bueno en VB.Net, y me esta dando problemas llenar un ListView a partir de un DataSet, por ejemplo el DataSet, viene con esta información:

    Yo utilizo este código:

    Try
                            With ListViewBitacora
                                .Items.Clear()
                                .Columns.Clear()
                                .View = View.Details
                                .GridLines = True
                                .FullRowSelect = True
                                ' añadir los nombres de columnas  
                                For c As Integer = 0 To DeserializarServidorUsu.DataSet.Tables(0).Columns.Count - 1
                                    .Columns.Add(DeserializarServidorUsu.DataSet.Tables(0).Columns(c).Caption)
                                Next
                            End With
    
                            With DeserializarServidorUsu.DataSet.Tables(0)
                                For f As Integer = 0 To .Rows.Count - 1
    
                                    Dim dato As New ListViewItem(.Rows(f).Item(0).ToString)
                                    ' recorrer las columnas  
                                    For c As Integer = 1 To .Columns.Count - 1
                                        dato.SubItems.Add(.Rows(f).Item(c).ToString())
                                    Next
                                    ListView2.Items.Add(dato)
                                Next
                            End With
                        Catch ex As Exception
                            MessageBox.Show(ex.Message, "Cliente ListViewBitacora ")
                        End Try
    
                    End If
    
                Catch ex As Exception
                End Try

    Y no me muestra el resultado esperado (el resultado esperado, seria igual a la primera imagen), me muestra esto:

    Ayuda, por favor. Y gracias...

    • Cambiado Enrique M. Montejo martes, 7 de junio de 2016 6:04 Pregunta relacionada con controles de Windows Forms.
    lunes, 6 de junio de 2016 14:19

Respuestas

  • @Armando Rodas

    También puedes usar una lista genérica para poder cargar los datos en el ListView

    Public Shared Function GetProductosLV() As List(Of ProductoEntity)
                Using cn As SqlConnection = Conexion.Conectar("default")
                    cn.Open()
                    Using cmd As SqlCommand = cn.CreateCommand()
                        cmd.CommandText = "SELECT Producto_Id, Nombre FROM Productos WHERE Producto_Id > 000009"
                        Dim producto As List(Of ProductoEntity) = new List(Of ProductoEntity)()
                        Using reader As SqlDataReader = cmd.ExecuteReader()
                            While reader.Read() 
                                Dim p As New ProductoEntity()
                                    Producto_Id = Convert.ToString(reader("Producto_Id")), Nombre = Convert.ToString(reader("Nombre")),
                                End While
                                End using
    
                                producto.Add(p)
    
                            End using
    
                        End using
                        Return producto
    
                    End Function
    
    
    
    

    Presentacion

    lista = Producto.GetProductosLV()
                For Each row in lista
                    Dim items As New ListViewItem(row.Producto_Id)
                Next
                    items.SubItems.Add(row.Nombre)
                    lisvProductos.Items.Add(items)

    Espero te sirva de ayuda.

    Nota: En tu caso no uses parámetros, modifica el ejemplo a tus necesidades.


    Pedro Ávila
    "El hombre sabio querrá estar siempre con quien sea mejor que él."
    Lima - Perú


    • Editado Pedro Ávila miércoles, 8 de junio de 2016 0:27 ...
    • Marcado como respuesta Armando Rodas jueves, 9 de junio de 2016 23:52
    miércoles, 8 de junio de 2016 0:25

Todas las respuestas

  • @Armando Rodas

    También puedes usar una lista genérica para poder cargar los datos en el ListView

    Public Shared Function GetProductosLV() As List(Of ProductoEntity)
                Using cn As SqlConnection = Conexion.Conectar("default")
                    cn.Open()
                    Using cmd As SqlCommand = cn.CreateCommand()
                        cmd.CommandText = "SELECT Producto_Id, Nombre FROM Productos WHERE Producto_Id > 000009"
                        Dim producto As List(Of ProductoEntity) = new List(Of ProductoEntity)()
                        Using reader As SqlDataReader = cmd.ExecuteReader()
                            While reader.Read() 
                                Dim p As New ProductoEntity()
                                    Producto_Id = Convert.ToString(reader("Producto_Id")), Nombre = Convert.ToString(reader("Nombre")),
                                End While
                                End using
    
                                producto.Add(p)
    
                            End using
    
                        End using
                        Return producto
    
                    End Function
    
    
    
    

    Presentacion

    lista = Producto.GetProductosLV()
                For Each row in lista
                    Dim items As New ListViewItem(row.Producto_Id)
                Next
                    items.SubItems.Add(row.Nombre)
                    lisvProductos.Items.Add(items)

    Espero te sirva de ayuda.

    Nota: En tu caso no uses parámetros, modifica el ejemplo a tus necesidades.


    Pedro Ávila
    "El hombre sabio querrá estar siempre con quien sea mejor que él."
    Lima - Perú


    • Editado Pedro Ávila miércoles, 8 de junio de 2016 0:27 ...
    • Marcado como respuesta Armando Rodas jueves, 9 de junio de 2016 23:52
    miércoles, 8 de junio de 2016 0:25
  • Oye tío sos un dios xD, gracias pero te tengo una duda, mira como me muestra  los títulos de las columnas, me los muestra todos juntos y yo los quiero tal como te los adjunto en las siguiente imagen, es decir que me los muestre fijos, mira las siguientes imágenes, me ayudas ? y te agradezco nuevamente...

    De esta manera quiero que me los muestre al momento de cargar la bitacora

    viernes, 10 de junio de 2016 0:05
  • Hola 

    Debes darle el tamaño que desees en la propiedad Width

    Private Sub FormatoListView()
                lisvProductos.Columns(0).Width = 75
                lisvProductos.Columns(1).Width = 350
    
            End Sub

    Este método lo llamas después de cargar el control


    Pedro Ávila
    "El hombre sabio querrá estar siempre con quien sea mejor que él."
    Lima - Perú

    viernes, 10 de junio de 2016 1:47
  • Muchas gracias, saludos...
    viernes, 10 de junio de 2016 2:12