关于datagridview中checkbox列在选中行的情况下无法操作值

这几天做项目的时候碰到了个小问题,在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;

}

时间: 2024-12-07 17:12:30

关于datagridview中checkbox列在选中行的情况下无法操作值的相关文章

winfrom 中datagridview中checkbox的使用方法

private void dgdv_skjs_CellContentClick(object sender, DataGridViewCellEventArgs e) { if (e.RowIndex != -1) { DataGridViewCheckBoxCell checkCell_rxwk = (DataGridViewCheckBoxCell)dgdv_skjs.Rows[e.RowIndex].Cells["rxwk"]; DataGridViewCheckBoxCell

实现listview中checkbox的多选与记录

android UI进阶之实现listview中checkbox的多选与记录 今天继续和大家分享涉及到listview的内容.在很多时候,我们会用到listview和checkbox配合来提供给用户一些选择操作.比如在一个清单页面,我们需要记录用户勾选了哪些条目.这个的实现并不太难,但是有很多朋友来问我如何实现,他们有遇到各种各样的问题,这里就一并写出来和大家一起分享. ListView的操作就一定会涉及到item和Adapter,我们还是先来实现这部分内容. 首先,写个item的xml布局,里

android UI进阶之实现listview中checkbox的多选与记录

今天继续和大家分享涉及到listview的内容.在很多时候,我们会用到listview和checkbox配合来提供给用户一些选择操作.比如在一个清单页面,我们需要记录用户勾选了哪些条目.这个的实现并不太难,但是有很多朋友来问我如何实现,他们有遇到各种各样的问题,这里就一并写出来和大家一起分享. ListView的操作就一定会涉及到item和Adapter,我们还是先来实现这部分内容. 首先,写个item的xml布局,里面放置一个TextView和一个CheckBox.要注意的时候,这里我设置了C

在jsp中选中checkbox后 将该记录的多个数据获取,然后传到Action类中进行后台处理 双主键情况下 *.hbm.xml中的写法

在jsp中选中checkbox后 将该记录的多个数据获取,然后传到Action类中进行后台处理 双主键情况下 *.hbm.xml中的写法 ==========方法1: --------1. 选相应的checkbox后  点删除按钮------------- <!-- *******************删除******************* -->     <input type="image" alt="delete"      src=&

Datagridview 添加checkbox列,并判断Datagridview 中的checkbox列是否被选中

Solution1://In Fill DataGridViewEvent : DataGridViewCheckBoxColumn ChCol = new DataGridViewCheckBoxColumn(); ChCol.Name = "CheckBoxRow"; ChCol.HeaderText = "CheckboxSelection"; ChCol.Width = 50; ChCol.TrueValue = "1"; ChCol.F

Gridviewcontrol控件和DataGridView控件获得当前选中行

Gridviewcontrol控件在事件处理函数中取得当前行的某列的值: string buyPlanId = gridView1.GetRowCellValue(gridView1.FocusedRowHandle, "BuyPlanId").ToString(); int buyState = Convert.ToInt32(gridView1.GetRowCellValue(gridView1.FocusedRowHandle, "BuyState")); 控

Java中只有按值传递,没有按引用传递!(两种参数情况下都是值传递)

今天,我在一本面试书上看到了关于java的一个参数传递的问题: 写道 java中对象作为参数传递给一个方法,到底是值传递,还是引用传递? 我毫无疑问的回答:“引用传递!”,并且还觉得自己对java的这一特性很是熟悉! 结果发现,我错了! 答案是: 值传递!Java中只有按值传递,没有按引用传递! 回家后我就迫不及待地查询了这个问题,觉得自己对java这么基础的问题都搞错实在太丢人! 综合网上的描述,我大概了解了是怎么回事,现在整理如下,如有不对之处望大神提出! 先来看一个作为程序员都熟悉的值传递

Bootstrap开源包中checkbox的全选和反选

不知为何以前js写的全选和反选功能都不能用了,经过Chrome浏览器控制台查看后,发现并不是不起作用,只是样式没有变化而已.首先先刚放上html代码,省略了别的代码,只含有checkbox: <!-- lang: html -->     <label class="checkbox">         <input class="states" type="checkbox" name="ids"

Exameple014实现html中checkbox的全选,反选和全不选(1)

<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>实例014</title> </head> <body> <form> <input type="checkbox" name="username[]" value="