Ver Mensaje Individual
  #7 (permalink)  
Antiguo 31/03/2014, 05:52
Avatar de gnzsoloyo
gnzsoloyo
Moderador criollo
 
Fecha de Ingreso: noviembre-2007
Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.324
Antigüedad: 16 años, 4 meses
Puntos: 2658
Respuesta: VB.2005 Cargar ListView en tiempo real

Bueno, encontré uno de los proyectos donde trabajé ese tema, y la cosa, pese a mi recuerdo, era exactamente como la estás planteando, pero con un pequeño agregado...
Primero algunos consejos:
1) No acoples la generación de la visualizacion a la base de datos. Crea una clase específica para administrar la relación de la aplicación con la base, y ponle todas las llamadas allí (obviamente creando una para cada caso nuevo que necesites).
2) No configures la visualización del ListView en el mismo método que lo carga. Son acciones y conceptos diferentes. Separalo al menos en dos: Uno para confirurar el control y otro para cargarlo.
3) No manipules directamente el control en el Sub. Pasalo como parámetro y cargalo así. Incluso más, te conviene pasar el control y la tabla de datos (no un reader, por favor, un DataSet o DataTable) para hacer toda la tarea.

Bien, este sería el código original (extirpadas todas las partes no relevantes) de uno de los usados:
Código vb:
Ver original
  1. Private Sub Mostrar(ByVal List As ListView, ByRef DS() As DataRow)
  2.         ' -----------------------------------------------------------------
  3.        Dim objListItem As New ListViewItem
  4.         ' -------------------------------------------------------------------
  5.        List.BeginUpdate()
  6.         With List
  7.             .Items.Clear()
  8.             Dim contar As Integer = 0
  9.             For Each drw As DataRow In DS
  10.                 objListItem = .Items.Add(valor_A_Ingresar, 0)
  11.                 ' Valores a ingresar en cada columna
  12.                objListItem.SubItems.Add(drw.Item(0).ToString)
  13.                 objListItem.SubItems.Add(drw.Item(1).ToString)
  14.                 objListItem.SubItems.Add(drw.Item(3).ToString)
  15.                 objListItem.SubItems.Add(drw.Item(4).ToString)
  16.                 objListItem.SubItems.Add(drw.Item(5).ToString)
  17.         End With
  18.         ' -----------------------------------------------------------------
  19.        List.EndUpdate()
  20.         ' Esto es para que la aplicación refresque
  21.        Application.DoEvents()
  22.         ' Esto es porque primero oculto el control, a fin de que el refresco del mismo no lo haga más lento.
  23.        LV.Show()
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)

Última edición por gnzsoloyo; 31/03/2014 a las 06:37