una net llenar lista from filling desde con c# winforms listview asynchronous virtualmode

c# - net - ¿Cómo lleno un ListView en modo virtual de forma asíncrona?



llenar listview c# con sql (1)

Se llamará a su controlador RetrieveVirtualItem cuando ListView necesite una actualización. Si sus datos aún no están disponibles y no puede esperar, tendrá que crear un elemento ficticio (si no maneja RetrieveVirtualItem, se generará una excepción).

Una vez que sus datos estén listos, puede invalidar el control; esto volverá a llamar a RetrieveVirtualItem para cada uno de los elementos visibles. Como alternativa a la invalidación de todo el control, puede controlar qué elementos se redibujarán utilizando el método RedrawItems del control ListView, que funciona en modo virtual y regular:

http://msdn.microsoft.com/en-us/library/system.windows.forms.listview.redrawitems.aspx

Parece que valdría la pena descargar sus registros en lotes si es necesario tomar un tiempo. Además, si las operaciones de su base de datos son costosas, vale la pena investigar el almacenamiento en caché de sus ListItems (hay un evento CacheVirtualItems que deberá manejar):

http://msdn.microsoft.com/en-us/library/system.windows.forms.listview.cachevirtualitems.aspx

Espero que esto ayude.

Me gustaría mostrar registros de nuestra base de datos en una vista de lista, pero recuperar puede llevar mucho tiempo. Puedo usar RetrieveVirtualItem para decirme cuándo se necesita un nuevo ListViewItem, agregar un ítem ficticio e iniciar una recuperación; pero, ¿qué hago con el registro cuando la base de datos lo devuelve? No puedo actualizar la colección Items de ListView mientras ListView está en VirtualMode. ¿Hay alguna manera de decirle al ListView que vuelva a cargar un artículo? ¿O puedo simplemente mantener una referencia al ListViewItem y poblar eso? Si ninguno de esos funciona, ¿de qué otra forma podría llenar un ListView en modo virtual de forma asíncrona?