Je souhaite afficher les enregistrements de notre base de données dans une liste - mais les recherches peuvent prendre beaucoup de temps. Je peux utiliser RetrieveVirtualItem pour me dire quand un nouveau ListViewItem est nécessaire, ajouter un élément factice, et démarrer une extraction; mais qu'est-ce que je fais avec l'enregistrement quand la base de données le renvoie? Je ne peux pas mettre à jour la collection d'éléments ListView alors que ListView est en mode virtuel. Existe-t-il un moyen d'indiquer à ListView de recharger un élément? Ou est-ce que je peux juste garder une référence à ListViewItem et peupler cela? Si aucun de ces deux ne fonctionne, comment pourrais-je peupler un ListView en mode virtuel de manière asynchrone? Votre gestionnaire RetrieveVirtualItem sera appelé lorsque la ListView doit être mise à jour.Comment peupler un ListView en mode virtuel de manière asynchrone?
Répondre
Si vos données ne sont pas encore disponibles et que vous ne pouvez pas attendre, vous devrez créer un élément factice (ne pas gérer RetrieveVirtualItem déclenchera une exception).
Une fois que vos données sont prêtes, vous pouvez invalider le contrôle - cela rappellera RetrieveVirtualItem pour chacun des éléments visibles. Comme alternative à invalider le contrôle tout, vous pouvez contrôler les éléments doivent être redessinés en utilisant la méthode RedrawItems du contrôle ListView, qui fonctionne dans les modes virtuels et réguliers:
http://msdn.microsoft.com/en-us/library/system.windows.forms.listview.redrawitems.aspx
On dirait qu'il peut être utile de télécharger vos dossiers par lots si cela doit prendre un certain temps. De plus, si vos opérations de base de données sont chers, il vaut bien étudier la mise en cache vos ListItems (il y a un événement CacheVirtualItems vous devrez gérer):
http://msdn.microsoft.com/en-us/library/system.windows.forms.listview.cachevirtualitems.aspx
J'espère que cela aide.
- 1. C#: Comment filtrer efficacement (cacher) les éléments ListView en mode virtuel?
- 2. Comment ne dessinez-vous que certains éléments ListView en mode virtuel?
- 3. Copie dirigée de manière asynchrone
- 4. Comment utiliser HttpWebRequest (.NET) de manière asynchrone?
- 5. Erreur envoi de courrier de manière asynchrone
- 6. plusieurs webrequests de manière asynchrone dans asp.net?
- 7. Pourquoi utiliser ReadDirectoryChangesW de manière asynchrone?
- 8. Erreur lors de l'appel du service en mode asynchrone
- 9. C# - Comment peupler un .net DataGridView par programme?
- 10. Roches du KVO. Maintenant, comment l'utiliser de manière asynchrone?
- 11. Comment modifier la position de ligne du mode virtuel DataGridView?
- 12. Django admin, inline peupler
- 13. Comment formater l'info-bulle utilisée par un DataGridView en mode virtuel?
- 14. Exécution de fichier batch commandes de Windows de manière asynchrone
- 15. Peupler objet en Objective C
- 16. asp.net - Comment mettre à jour une boîte de texte de manière asynchrone pendant un long processus?
- 17. L'appel de deux méthodes de manière asynchrone dans ASP.NET 2.0
- 18. comment modifier par programme la valeur de cellule d'un datagridview en mode virtuel?
- 19. Java ne fait-il pas les choses de manière asynchrone?
- 20. un Peupler SelectList d'un DataTable
- 21. Comment appeler une page asp.net en utilisant de manière asynchrone JQuery
- 22. Appel du service WCF de manière asynchrone dans une boucle
- 23. Comment interroger de manière asynchrone un fichier à l'aide d'une minuterie flash sans bloquer l'interface utilisateur?
- 24. Les gestionnaires d'événements sont-ils traités de manière asynchrone?
- 25. Comment redimensionner les colonnes ListView d'une manière threadsafe - C#
- 26. Que signifie exécuter un système d'exploitation virtuel en "mode sans tête"?
- 27. C# Exception lors de la récupération de lignes d'une grille de données en mode virtuel
- 28. ASP.NET - Service Web asynchrone
- 29. Peupler un groupe avec des images .Winforms
- 30. Comment transmettre en Runtime un index de ligne pour ListView?