2011-08-02 141 views
2

我需要以編程方式填充DataGridView。數據庫的列是固定的,行取決於列表的大小。其實我有List<MyCustomClass>,我需要用該列表填寫數據。如何以編程方式填充DataGridView

目前,我這樣做:

public Constructor() 
{ 
    InitializeComponent(); 
    dataGridViewFiles.AutoGenerateColumns = false; 
    dataGridViewFiles.ColumnCount = 3; 
    dataGridViewFiles.Columns[0].Name = "File Name"; 
    dataGridViewFiles.Columns[1].Name = "Total Documents"; 
    dataGridViewFiles.Columns[2].Name = "Total Pages"; 
} 

Public LoadDGV() 
{ 
    for (int i = 0; i < nTotalInputFiles; i++) 
    {//add code here for adding rows to dataGridviewFiles 
     DataGridViewRow tempRow = new DataGridViewRow(); 

     DataGridViewCell cellFileName = new DataGridViewTextBoxCell(); 
     cellFileName.Value = selectedProject.InputFiles[i].FileName; 
     tempRow.Cells.Add(cellFileName); 

     DataGridViewCell cellDocCount = new DataGridViewTextBoxCell(); 
     cellDocCount.Value = selectedProject.InputFiles[i].DocCount.ToString(); 
     tempRow.Cells.Add(cellDocCount); 

     DataGridViewCell cellPageCount = new DataGridViewTextBoxCell(); 
     cellPageCount.Value = selectedProject.InputFiles[i].PageCount.ToString(); 
     tempRow.Cells.Add(cellPageCount); 

     tempRow.Tag = selectedProject.InputFiles[i].Id; 
     dataGridViewFiles.Rows.Add(tempRow); 
    } 

但上面的代碼中的某些時間不完美。那麼還有其他方法嗎?或有任何改善以上的建議?

+2

你看到了什麼錯誤?或者你看到了什麼結果? – Tim

回答

3

我會避免直接DataGridView的工作,我建議你使用的一些「模範」那樣你就可以綁定DGV。

例如,您可以使用與您所需網格具有相同方案的DataTable,並且這樣您只能操作模型。

我總是發現使用DataBinding和操縱模型比試圖直接操縱DGV更好。

0

什麼是完美的嗎?你可以創建一個DataTable,並將其綁定到你的網格,自動生成你的列

+0

完美的我的意思是有些時候添加行,有些時候沒有,當它不添加時,它顯示異常RowIndex出界 – Jame

+0

我沒有看到你的代碼中的任何地方,你可能有RowIndex的問題。 – Arian

相關問題