在网上找到的都不是很合适,现在我针对自己使用的一点经验简单说明一下,有不足之处,还望各位斧正:
在进行显示的列上,我要用Y表示选中,N表示未选中,则设置
FalseValue = "N";
TrueValue = "Y";
IndeterminateValue = "N";
然后将需要的字段绑定到该位置
关于如何获得哪些被选中:
this.dataGridView1.CommitEdit(DataGridViewDataErrorContexts.Commit);
for (int i = 0; i < this.dataGridView1.Rows.Count; i++)
{
Console.WriteLine(dataGridView1.Rows[i].Cells[0].Value.ToString());
}
在输出的位置,输出Y则是选中的(需要的自己修改一下)
问题:为什么要使用 this.dataGridView1.CommitEdit(DataGridViewDataErrorContexts.Commit);
因为当我们对checkbox的cell进行编辑后,你会看到在RowHeader上显示一个笔的形状的东西,这说明此列正在编辑,如果直接用Value获取值,则会获得在编辑之前的值,使用了CommitEdit方法后,我们再调用Value属性就会获得你看到的值,当然这句话也可以放在dataGridView的事件里面进行处理,就不需要再每次遍历之前执行这句了。
PS:你可以用其他的类型如bool型来表示列的选中与否,此处不在详细说明,如有疑问请留言,谢谢
参考:MSDN
在进行显示的列上,我要用Y表示选中,N表示未选中,则设置
FalseValue = "N";
TrueValue = "Y";
IndeterminateValue = "N";
然后将需要的字段绑定到该位置
关于如何获得哪些被选中:
this.dataGridView1.CommitEdit(DataGridViewDataErrorContexts.Commit);
for (int i = 0; i < this.dataGridView1.Rows.Count; i++)
{
Console.WriteLine(dataGridView1.Rows[i].Cells[0].Value.ToString());
}
在输出的位置,输出Y则是选中的(需要的自己修改一下)
问题:为什么要使用 this.dataGridView1.CommitEdit(DataGridViewDataErrorContexts.Commit);
因为当我们对checkbox的cell进行编辑后,你会看到在RowHeader上显示一个笔的形状的东西,这说明此列正在编辑,如果直接用Value获取值,则会获得在编辑之前的值,使用了CommitEdit方法后,我们再调用Value属性就会获得你看到的值,当然这句话也可以放在dataGridView的事件里面进行处理,就不需要再每次遍历之前执行这句了。
PS:你可以用其他的类型如bool型来表示列的选中与否,此处不在详细说明,如有疑问请留言,谢谢
参考:MSDN