我想在列表視圖中顯示來自我們數據庫的記錄 - 但檢索可能需要很長時間。我可以使用RetrieveVirtualItem告訴我什麼時候需要一個新的ListViewItem,添加一個虛擬物品並開始檢索;但是當數據庫返回記錄時我該如何處理記錄?當ListView處於VirtualMode模式時,我無法更新ListView的Items集合。有沒有辦法告訴ListView重新加載一個項目?或者我可以只保留對ListViewItem的引用並填充它?如果這兩者都不起作用,我還能如何以異步方式在虛擬模式下填充ListView?如何異步填充虛擬模式下的ListView?
4
A
回答
9
當ListView需要更新時,您的RetrieveVirtualItem處理程序將被調用。如果您的數據尚不可用,並且您無法等待,那麼您將不得不創建一個虛擬項目(不處理RetrieveVirtualItem會引發異常)。
一旦數據準備就緒,您可以使控件失效 - 這將再次爲每個可見項目調用RetrieveVirtualItem。作爲一種替代整個控制無效,你可以控制哪些項目是通過使用ListView控件的RedrawItems方法,它在虛擬和定期模式的工作原理重繪:
http://msdn.microsoft.com/en-us/library/system.windows.forms.listview.redrawitems.aspx
這聽起來像它可能如果需要一段時間,請分批下載您的記錄。另外,如果你的數據庫操作是昂貴的,這是值得調查緩存您listItems中(有一個CacheVirtualItems事件中,你需要處理):
http://msdn.microsoft.com/en-us/library/system.windows.forms.listview.cachevirtualitems.aspx
我希望這有助於。
相關問題
- 1. 的ListView與continious填充未虛擬化
- 2. 滾動ListView填充虛擬值
- 3. 如何填充GridView異步
- 4. 如何在虛擬模式下枚舉ListView?
- 5. 如何在虛擬模式下正確「刷新」WinForms ListView?
- 6. 如何在虛擬模式下向ListView添加/刪除項目?
- 7. DataAdapter填充異步異常
- 8. C#listview搜索虛擬模式
- 9. 以虛擬模式在ListView中分組
- 10. WPF的ListView虛擬化在調試模式下
- 11. 虛擬異步方法
- 12. 如何異步填充列表視圖?
- 13. iOS:用於填充異步獲取數據的設計模式
- 14. 在回收模式下重複ListView虛擬化值
- 15. DataGrid中的數據如何以流方式異步填充?
- 16. GWT - 異步填充網格
- 17. 異步填充react-select
- 18. 虛擬模式下的datagridview中的System.StackOverflowException
- 19. 如何使用MVVM模式填充數據庫中的ListView?
- 20. 如何在ListView中使用虛擬模式?
- 21. 如何異步下載ListView HTML圖像?
- 22. 如何在Java中以有序方式異步填充數組?
- 23. 如何以異步方式填充集合?
- 24. 如何填充Android ListView Dyanamically
- 25. 如何用Loader填充ListView?
- 26. 如何從ArrayAdapter填充ListView
- 27. 填充的JavaFX的ListView拋出異常
- 28. 填充的ListView
- 29. SWIFT aws S3異步下載?下載圖像和填充的tableview
- 30. 無法填充虛擬數據ManyToManyField