这几天做项目的时候碰到了个小问题,在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列在选中行的情况下无法操作值的更多相关文章

  1. C# winform单元格的formatted值的类型错误 DataGridView中CheckBox列运行时候System.FormatException异常

    在DataGridView手动添加了CheckBox列;在窗体Show的时候,遇到一个错误:错误如下: DataGridView中发生一下异常:System.FormatException:单元格的F ...

  2. Winform 中DataGridView的checkbox列,当修改checkbox状态时实时获得其状态值

    不知道大家有没有这样的经验,当点击或者取消datagridview的checkbox列时,比较难获得其状态是选中还是未选中,进而不好进行其它操作,下面就列出它的解决办法: 主要用到了DataGridV ...

  3. 实现DataGridView控件中CheckBox列的使用

    最近做WindowsForms程序,使用DataGridView控件时,加了一列做选择用,发现CheckBox不能选中.搜索后,要实现DataGridView的CellContentClick事件,将 ...

  4. VIM 中鼠标选择不选中行号

    VIM 中鼠标选择不选中行号 在Vim中,我们一般会使用 :set nu 打开行号开关. 但是打开行号后,有个弊端,那就是在用鼠标进行选择的时候,会将前面的行号也一起进行拷贝了.但是在gVim中进行选 ...

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

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

  6. Winform开发 如何为dataGridView 添加CheckBox列,并获取选中行

    //添加CheckBox列 DataGridViewCheckBoxColumn columncb = new DataGridViewCheckBoxColumn(); columncb.Heade ...

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

    Solution1://In Fill DataGridViewEvent : DataGridViewCheckBoxColumn ChCol = new DataGridViewCheckBoxC ...

  8. wpf DataGrid CheckBox列全选

    最近在wpf项目中遇到当DataGrid的header中的checkbox选中,让该列的checkbox全选问题,为了不让程序员写自己的一堆事件,现写了一个自己的自定义控件 在DataGrid的 &l ...

  9. ElementUI 中 el-table 获取当前选中行的index

    第一种方法:将index放到row数据中 首先,给table加一个属性::row-class-name="tableRowClassName" 然后定义tableRowClassN ...

随机推荐

  1. Tomcat 连接数与线程池详解

    前言 在使用tomcat时,经常会遇到连接数.线程数之类的配置问题,要真正理解这些概念,必须先了解Tomcat的连接器(Connector). 在前面的文章 详解Tomcat配置文件server.xm ...

  2. sublime text3 添加新片段

    1.tools->developer->new snippet 要介绍一下snippet四个组成部分: content:其中必须包含<![CDATA[…]]>,否则无法工作, ...

  3. urlencode编码问题(以及urlparse) 转

    网址链接中的中文编码 中文的gbk(GB2312)编码: 一个汉字对应两组%xx,即%xx%xx 中文的UTF-8编码: 一个汉字对应三组%xx,即%xx%xx%xx 可以利用百度进行URL编码解码 ...

  4. Tarjan算法打包总结(求强连通分量、割点和Tarjan-LCA)

    目录 Tarjan打包总结(求强连通分量.割点和Tarjan-LCA) 强连通分量&缩点 原理 伪代码 板子(C++) 割点 原理 伪代码 最近公共祖先(LCA) 原理 伪代码 板子 Tarj ...

  5. C# 检查键盘是否唤醒到桌面上显示

    大概需要的win32函数 public static extern IntPtr FindWindow(string lpClassName, string lpWindowName)//返回值为具有 ...

  6. Dojo2 前端框架基本操作

    安裝CLI,需要先有npm: npm install -g @dojo/cli npm install -g @dojo/cli-create-app 创建项目目录,-n 后面是名字,创建完成后会自动 ...

  7. [转] Linux命令——timeout

    [From] https://blog.csdn.net/xiaqunfeng123/article/details/54315390 Linux命令——timeout 命令简介 运行指定的命令,如果 ...

  8. [转] Spring Boot 揭秘与实战(二) 数据存储篇 - ElasticSearch

    [From] http://www.tuicool.com/articles/JBvQrmj 本文讲解Spring Boot基础下,如何使用 ElasticSearch,实现全文搜索. 版本须知 sp ...

  9. sed 练习

    [root@server3 mnt]# cat -n passwd 1  root:x:0:0:root:/root:/bin/bash 2  bin:x:1:1:bin:/bin:/sbin/nol ...

  10. 文献综述九:Oracle数据库性能模型的研究

    一.基本信息 标题:Oracle数据库性能模型的研究 时间:2018 出版源:数字技术与应用 文件分类:对框架的研究 二.研究背景 帮助运维人员分析数据库性能,发现问题,指导调优. 三.具体内容 文献 ...