找不到DataGridView的列名

时间:2014-02-20 16:22:26

标签: c# datagridview datagridviewcolumn

为什么我会收到MyEntity和FullName Columns的列名未找到的异常?虽然我看到列名显示在UI中。

InitializeComponent();

dataGridView1.SelectionMode = DataGridViewSelectionMode.FullRowSelect;

foreach (DataGridViewRow row in dataGridView1.SelectedRows)
{
    int rowIndex = dataGridView1.Rows.IndexOf(row);
    myObject = dataGridView1.Rows[rowIndex].Cells["MyEntity"].Value as IEntityObject;
    fileName = dataGridView1.Rows[rowIndex].Cells["FullName"].Value.ToString();       
}

2 个答案:

答案 0 :(得分:12)

因为,令人愤怒的是,datagridview列实际上并没有与DataTable列名相同。如果查看设计器“属性”窗口中的列集合,您将看到它可能被命名为“DataGridViewColumn4”或类似名称。

如果您知道索引,则应使用该索引,或将列重命名为DT列名称。

答案 1 :(得分:1)

包含它并不是很明显,以编程方式为您的datagridview添加一个名称为set的复选框应该如下所示:

        DataGridViewCheckBoxColumn col = new DataGridViewCheckBoxColumn();
        col.Width = 90;
        col.HeaderText = "Sync To Vend?"; //Header cell text
        col.Name = "SyncVendBox"; //This is the important part
        ProductGrid.Columns.Insert(2, col);

如果你想勾选复选框:

        for (int i = 0; i < ProductGrid.Rows.Count; i++)
        {
            ProductGrid.Rows[i].Cells["SyncVendBox"].Value = true;
        }