2011-10-31 70 views
0

我有一個相當大的數據集(1000行),我想將其饋入Windows窗體應用程序(.NET 3.5)中的DataGridView。查詢數據庫中的數據以及構建DataTable非常快,但是當我設置DataGridView的DataSource屬性時,從應用程序響應之前大約需要一分鐘。設置DataGridView的大型數據源時的性能

我已經嘗試使用反射的魔法設置DoubleBuffered爲true,但是這似乎沒有效果。有小費嗎?

只是爲了澄清,具有可怕的性能的代碼很簡單:

dgv1.DataSource = dt; 

其中「DT」是一個DataTable我已經建立了

+0

表格有多少列?你使用任何大的(或二進制)數據類型?您可能還想考慮分頁 - 並僅綁定必需的最小行。 – christofr

+1

1000行不是極端的。你有任何AutoColumnWidth設置? –

+0

[用大量數據填充DataGridView的最佳方式]的可能重複(http://stackoverflow.com/questions/3580237/best-way-to-fill-datagridview-with-large-amount-of-data) –

回答

1

我不知道這將如何影響您的應用程序。

但是,根據哪個事件正在啓動DataGridView的羣體,我會使用BackgroundWorker,這將在後臺工作足夠有趣,釋放應用程序以免它看起來沒有響應。而且後臺工作人員可以回報給調用它的主線程,使您可以實現一些軟更新/進度條。

從自己的經驗,從數據源獲取數據和綁定它總是需要一些時間去做。

protected BackgroundWorker _bw; 
_bw = new BackgroundWorker; 
_bw.DoWork += DoWorkMethod; 

public void DoWorkMethod(object sender, DoWorkEventArgs e) 
{ 
//Do work here. 
} 

這就是它的要點。您可以使用Completed和UpdateProgress方法來幫助顯示進度條等...

+1

這個問題包含足夠的信息來確定這不會是解決方案。分配給DataSource必須在主線程上完成。 –

相關問題