2017-05-08 93 views
-2

我正在構建一個Windows窗體應用程序,我想在哪裏打開窗體,如產品,它應該加載數據庫中可用的所有列出的產品。隨着照片。並在DataGridView中顯示它。 現在我的問題是在gridview中加載這麼多數據的最佳方式是什麼?Windows窗體DataGridView快速加載

+2

數據虛擬化。您還可以提高控件的性能(請參閱,例如[this](http://stackoverflow.com/q/4255148/1997232))。但是,如果問題得不到解決,問問題還爲時過早。你有嘗試過什麼嗎?你不滿意什麼? – Sinatr

+0

電網的性能。當我加載這麼多的數據時(gui)會被掛起很多 – Siraj

回答

0

如果要顯示DataGridView中的數據,並且您懷疑會有大量數據(可能太多以至於將其完全加載到內存中可能會出現問題),則應該使用其功能VirtualMode。請參閱MSDN文章,"Walkthrough: Implementing Virtual Mode in the Windows Forms DataGridView Control"

「當你想在DataGridView控件來顯示非常大量的表格數據,可以VirtualMode屬性設置爲true,並明確其數據存儲管理控制的互動此。可以讓您在這種情況下調整控件的性能。「

基本上,虛擬模式意味着DataGridView控件將在需要數據時提高CellValueNeeded event。您訂閱該事件的處理程序並「及時」獲取所需數據。這樣就可以將全部數據集的一小部分保留在內存中。

這取決於你在內存中保存了多少數據記錄。一些可能的策略:

  • 您執行分頁,即從數據庫加載連續行的塊。這需要一個已知的順序。也就是說,您需要能夠從DataGridView的當前排序中派生出ORDER BY SQL子句。 (請查看"Using OFFSET and FETCH to limit the rows returned"以瞭解如何在SQL級別實現分頁。)

  • 您從數據庫中獲取單個行。這可能比分頁效率低,但如果無法確定與您的DataGridView當前排序標準相匹配的ORDER BY子句,則效果會更好。

在這兩種情況下,請查看我鏈接到上面的文章,瞭解如何使用虛擬模式的教程。