2011-08-02 31 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を使用すると、モデルを操作するだけで済みます。

DGVを直接操作しようとするよりも、DataBindingを使用してモデルを操作する方が良いことがわかっています。

0

何のために完璧なのですか?あなたはデータテーブルを作成することができますし、あなたの列に自動的に作成し、あなたのグリッドにバインドし

+0

完璧なことは、いくつかの時間を追加する行といくつかの時間がないことを意味し、それが追加されません例外を示していますRowIndexの範囲外 – Jame

+0

私はあなたのコードでRowIndexで問題があるかもしれません。 – Arian