DataGridView第一行编辑在checkboxcolumn中不起作用

时间:2013-01-19 12:50:22

标签: c# winforms datagridview

我有一个像这张图片中的数据网格视图:

enter image description here

我将ColumnsHeaderVisible设为False,第一列为DataGridViewCheckBoxColumn

问题是我可以通过鼠标单击取消选中所有行,但第一行不可更改。

我无法检查/取消选中表格的第一行。

我想再说一遍,我不能用鼠标点击这样做。

有什么问题?

谢谢..

2 个答案:

答案 0 :(得分:0)

在数据绑定之后,您应该在DataBindingComplete事件中调用

dataGridView.ClearSelection();

DataBindingComplete Event

修改

您可以遍历DataBindingCompleteEvent

中的所有行
private void dataGridView_DataBindingComplete(object sender,
    DataGridViewBindingCompleteEventArgs e)
{
    for (int i = 0; i < dataGridView.Rows.Count - 1; i++)
    {
       dataGridView.Rows[i].Cells[0].Value = false;
    }
}

答案 1 :(得分:0)

  private void Form1_Load(object sender, EventArgs e)
        {
            dataGridView1.CellContentClick += new DataGridViewCellEventHandler(dataGridView1_CellContentClick);
        } 

private void dataGridView1_CellContentClick(object sender, DataGridViewCellEventArgs e)
        {
            if (e.ColumnIndex == 0)
            {
                dataGridView1[0, e.RowIndex].Value = !(bool)dataGridView1[0, e.RowIndex].Value;

            //Or
            //bool IsBool = false;
            //IsBool = bool.TryParse(dataGridView1[0, e.RowIndex].EditedFormattedValue.ToString(), out IsBool);
            //if (IsBool)
            //   dataGridView1[0, e.RowIndex].Value = IsBool;
            }
        }

编辑:将代码放在CellClick event

 private void dataGridView1_CellClick(object sender, DataGridViewCellEventArgs e)
        {
            if (e.ColumnIndex == 0)
            {
                //Find primaykey from dataTable   
                DataRow[] Rows = dataTable.Select("Id = '" + dataGridView1[1, e.RowIndex].EditedFormattedValue.ToString() + "'");
                Rows[0]["CheckBoxes"] = !bool.Parse(Rows[0]["CheckBoxes"].ToString());
            }
        }