这几天做项目的时候碰到了个小问题,在datagridview中实现对checkbox列的全选和反选功能。代码如下
//全选
if (dataGridView1.Rows.Count > 0)
foreach (DataGridViewRow dgvr in dataGridView1.Rows)
{
(dgvr.Cells["checkbox列名称"] as DataGridViewCheckBoxCell ).Value = true;
}
//反选
if(dataGridView1.Rows.Count>0)
foreach (DataGridViewRow dgvr in dataGridView1.Rows)
{
(dgvr.Cells["
checkbox列名称
"] as DataGridViewCheckBoxCell ).Value = (bool)((dgvr.Cells["DeleteFile"] as DataGridViewCheckBoxCell ).Value) ? false : true;
}
发现个问题就是在datagridview选中的那一行上checkbox的值并没有改变。经baidu和google了一下,发现在代码改变状态前,使其readonly变为true就能解决。原理不得而知,先记下来吧!改进后的代码如下:
//全选
if (dataGridView1.Rows.Count > 0)
foreach (DataGridViewRow dgvr in dataGridView1.Rows)
{
(dgvr.Cells[" checkbox列名称 "] as DataGridViewCheckBoxCell ).ReadOnly = true;
(dgvr.Cells["checkbox列名称"] as DataGridViewCheckBoxCell ).Value = true;
(dgvr.Cells[" checkbox列名称 "] as DataGridViewCheckBoxCell ).ReadOnly = false;
}
//反选
if(dataGridView1.Rows.Count>0)
foreach (DataGridViewRow dgvr in dataGridView1.Rows)
{
(dgvr.Cells["
checkbox列名称
"] as DataGridViewCheckBoxCell ).ReadOnly = true;
(dgvr.Cells["
checkbox列名称
"] as DataGridViewCheckBoxCell ).Value = (bool)((dgvr.Cells["DeleteFile"] as DataGridViewCheckBoxCell ).Value) ? false : true;
(dgvr.Cells["
checkbox列名称
"] as DataGridViewCheckBoxCell ).ReadOnly = false;
}
关于datagridview中checkbox列在选中行的情况下无法操作值
最新推荐文章于 2024-08-09 16:24:13 发布