以编程方式如何填充DataGridView

3

我需要以编程方式填充一个DataGridView。数据库的列是固定的,而行数取决于列表的大小。实际上,我有一个 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
你看到了什么错误?或者你看到了什么结果? - Tim
2个回答

3

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

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

我始终发现使用数据绑定并操纵模型比尝试直接操纵DGV更好。


0

对你来说什么是完美的?你可以创建一个 DataTable 并将其绑定到网格,它会自动创建列。


我所说的“完美”是指有时会添加行,有时则不会,而当它不添加时,就会显示“RowIndex out of bound”异常。 - Jame
我在你的代码中没有看到任何可能与RowIndex有问题的地方。 - Arian

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接