Ver Mensaje Individual
  #8 (permalink)  
Antiguo 31/03/2014, 15:49
vejin666
Invitado
 
Mensajes: n/a
Puntos:
Respuesta: VB.2005 Cargar ListView en tiempo real

Cita:
Iniciado por gnzsoloyo Ver Mensaje
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.
Hola otra vez gnzsoloyo, he seguido tus consejos 2 y 3 (excepto lo de pasar tambien el dataset, esta "Under Construction"), he metido la configuracion de visualizacion del ListView en un Sub aparte, y he enviado por cabecera el ListView en vez de trabajar con el directamente, he colocado los ListView.BeginUpdate() y ListView.EndUpdate() fuera del sub (antes y despues respectivamente de la llamada al sub de carga) y noto una mejoria en la visualiacion de la pantalla, pero he probado a meter un Threading.Thread.Sleep(500) dentro del loop para comprobar la carga.
Código vb:
Ver original
  1. Do While datos.Read
  2.  
  3.                 Threading.Thread.Sleep(500)
  4.                
  5.                 Dim elem As New ListViewItem
  6.                 elem.ImageIndex = 0
  7.                 elem.Text = datos.GetValue(0)
  8.                 elem.Tag = datos.GetValue(0)
  9.                 For i = 1 To datos.FieldCount - 1
  10.                     elem.SubItems.Add(datos.GetValue(i))
  11.                 Next
  12.                 If contador = 0 Then
  13.                     elem.BackColor = Color.Beige
  14.                     contador = contador + 1
  15.                 Else
  16.                     elem.BackColor = Color.Bisque
  17.                     contador = contador - 1
  18.                 End If
  19.                 tabla.Items.Add(elem)
  20.             Loop

Al meter el Sleep vuelve a quedarse la pantalla congelda, ¿el metodo sleep provoca esos efectos?

Una cosa mas, tu consejo numero 1 no lo entiendo bien, ¿Te refieres a que haga todas las llamadas a la base de datos y cargue un DataSet o DataTable en un sub a parte y luego lo envie a la visualizacion?

Muchas gracias por tu infinita paciencia.