2010-07-06 46 views
0

背景:我有任意查詢被執行,然後我抓取數據 - 數組的記錄=對象數組。我想用DataGrid查看它們。如何加快WPF DataGrid?

問題:它不覺得應用程序足夠響應。從查詢切換到查詢速度很慢,切換需要大約1-2秒,並且只有約20條記錄要顯示!我想立即開關,你點擊「下一個查詢」,你就可以馬上得到結果。

代碼:

 // defining colums for a grid 
     grid.Columns.Clear(); 

     int i = 0; 
     foreach (var db_col in query.Names) // names of the colums 
     { 
      var col = new DataGridTextColumn(); 
      col.Header = db_col; 
      col.Binding = new Binding(String.Format("Data[{0}]",i)); 
      grid.Columns.Add(col); 
      ++i; 
     } 

     // adding rows to grid -- the culprit 
     grid.Items.Clear(); 

     foreach (var db_row in query.Rows) 
     { 
      var row = new DataGridRow(); 
      row.Item = db_row; 
      grid.Items.Add(row); 
     } 

我看不出有什麼我可以另一種方式 - 我遍歷行和我通過一個將它們添加一個。行已經在內存中,此時沒有數據庫通信。我如何知道這一點(添加行)是減速的原因?很簡單,我評論這一點,應用程序變得很快。

我的盒子:Windows 7旗艦版32位,CPU Intel Core2Duo 2.66GHz,2GB RAM。

回答

1

您是否嘗試過調用BeginInit和EndInit來在添加每個項目後停止網格更新?

grid.BeginInit(); 
grid.Items.Clear(); 

foreach (var db_row in query.Rows) 
{ 
    var row = new DataGridRow(); 
    row.Item = db_row; 
    grid.Items.Add(row); 
} 

grid.EndInit(); 
+0

謝謝,我現在做了,但仍然 - 滯後可見。 – greenoldman 2010-07-06 09:45:26