2010-08-26 58 views
0

我在寫一個應用程序,我從數據庫加載兩個DataGridViews。我已經使用dataAdapter.Fill(DataSet)成功完成了這個任務,但是我遇到的問題是來自DB的數據有數以萬計的記錄。第一次跑時速度非常慢(太慢,約7分鐘)。下次運行時間更合理(約35秒)。所以我想我會嘗試另一種方法:用數據加載一個二維陣列列表,然後將其傳遞到datagridviews中。本來我以爲這是一個快速測試,看看時間的增加,但如果有的話,它已經證明比我想象的更困難。以下是我有:使用二維數組加載DataGridView時出現的問題

while(dr.Read()) 
     { 



      for (int l = 0; b && l <= dr.FieldCount-1; l++) 
      { 
       DataGridViewColumn column = new DataGridViewColumn(); 
       column.CellTemplate = cellTemplate; 
       column.FillWeight = 1; 
       column.Name = dr.GetName(l); 
       dgv.Columns.Add(column); 
      } 
      b = false; 

      for (int i = 0; i <= dr.FieldCount - 1; i++) 
      { 
       row.Add(dr.GetValue(i)); 
      } 

      table.Add(row); 

      row = new System.Collections.ArrayList(); 
     } 

     dgv.DataSource = table; 

注意,我將創建一個類來構建的數據(每列數據成員,但該列可能會改變),因此ArrayList的想法。 datagridview最終具有正確的列,正確的名稱以及正確的數字或​​行,但行全部爲空,並且添加了與arrayList結構相關的其他列。我究竟做錯了什麼?有沒有更好的辦法?任何幫助/反饋將不勝感激! :-)

感謝,

回答

0

好吧......我想,這out..sort的;-)我拋棄了ArrayList的想法,只是增加值直接進入DGV。這是我做什麼,如果有人關心:-)

... 
    while(dr.Read()) 
    { 
     for (int l = 0; b && l <= dr.FieldCount-1; l++) 
     { 
      DataGridViewColumn column = new DataGridViewColumn(); 
      column.CellTemplate = cellTemplate; 
      column.FillWeight = 1; 
      column.Name = dr.GetName(l); 
      dgv.Columns.Add(column); 
     } 
     b = false; 

     dgvRow = new DataGridViewRow(); 

     for (int i = 0; i <= dr.FieldCount - 1; i++) 
     { 

      dgvCell = new DataGridViewTextBoxCell(); 
      dgvCell.Value = dr.GetValue(i).ToString(); 
      dgvRow.Cells.Add(dgvCell); 
     } 

     dgv.Rows.Add(dgvRow); 
    } 
... 

這使我對我的下一個問題:Best way to fill DataGridView with large amount of data