如何以编程方式填充DataGridView

时间:2011-08-02 04:25:10

标签: c# winforms

我需要以编程方式填充DataGridView。数据库的列是固定的,Rows取决于列表的大小。实际上我有List<MyCustomClass>,我需要用该列表填充数据。

目前,我这样做:

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 个答案:

答案 0 :(得分:3)

我会避免直接使用DataGridView,我建议您使用某种类型的“模型”,然后将DGV绑定到。

例如,您可以使用与所需网格具有相同方案的DataTable,这样您只需操作模型。

我总是发现使用DataBinding并操纵模型比尝试直接操作DGV更好。

答案 1 :(得分:0)

什么是最适合您的?您可以创建一个DataTable并将其绑定到自动创建列的网格