Datagridview 中的checkbox 选中或勾选状态失效

1、问题描述,先选中第一行,再取消选择,然后点击部门全选,第一行没有打钩,状态是不选中的状态。

2、分析代码

先选中第一行,单元格的单击事件中 改变选中状态为1,第一行取消选择,单元格的单击事件中 改变选中状态为0

 private void dgvDept_CellContentClick(object sender, DataGridViewCellEventArgs e)
        {
            if (e.RowIndex >= 0 && e.ColumnIndex == 1)
            {
                if (this.dgvDept.Rows[e.RowIndex].Cells["colSelect"].Value.ToString() == "1")
                {
                    this.dgvDept.Rows[e.RowIndex].Cells["colSelect"].Value = 0;
                }
                else
                {
                    this.dgvDept.Rows[e.RowIndex].Cells["colSelect"].Value = 1;
                }
            }

        }

2、点击全选按钮,此时第一个单元格没有结束它的编辑状态,此时执行全选,单元格1的状态先变为1,然后才会结束他的编辑状态,再次状态改变事件把值赋为0,

private void btnDeptSelectAll_Click(object sender, EventArgs e)

        {
            dgvDept.EndEdit();   //此处必须加上结束编辑状态代码,切记
            if (btnDeptSelectAll.Text == "部门全选")
            {
                btnDeptSelectAll.Text = "部门全不选";
                btnDeptSelectAll.Image = global::KJMonitorSystem.Properties.Resources.SelectNull;
                for (int i = 0; i < dgvDept.Rows.Count; i++)
                {
                    this.dgvDept.Rows[i].Cells["colSelect"].Value = 1;
                }
            }
            else
            {
                btnDeptSelectAll.Text = "部门全选";
                btnDeptSelectAll.Image = global::KJMonitorSystem.Properties.Resources.SelectAll;
                for (int i = 0; i < dgvDept.Rows.Count; i++)
                {
                    this.dgvDept.Rows[i].Cells["colSelect"].Value = 0;
                }
            }
            //dgvDept.ClearSelection();
            //dgvDept.Refresh();
        }

当你需要保存修改过后的内容,必须将光标指向另外一行, DataGridView才会将编辑过后的数据提交到数据缓存区,当你操作完DataGridview的时候,又没有移动另一行,你在上面的修改有可能还没有提交到数据缓存区,你在执行代码获取DataGridView上面修改的行数据时不一定能获取到修改后的内容,所以,想重新读取到修改后的内容,为了安全起见,手动执行一下DataGridView.EndEdit(),让修改后的内容提交到缓存区,这样就可以读取到DataGridView修改后的内容了。

时间: 2024-10-16 04:48:11

Datagridview 中的checkbox 选中或勾选状态失效的相关文章

datagridview中使用checkbox问题。

如果套用datagridview中的checkboxfield,生成的数据,会出现无法选择datagridview中数据项的问题,即checkbox不可以被鼠标点击,选中/取消选中.此checkbox的选中与否,完全取决于数据库,表中的bool值得类型,当值为true的时候,生成的datagridview中的checkbox是处于勾选状态的,要想取消勾选,需要通过sql语句,来修改后台数据库表中的对应字段的值(把true改成false).这种方法比较烦. 另一种比较好的做法是在datagridv

DataGridView中实现checkbox全选的自定义控件

在DataGridView中实现Checkbox的全选的方法就是在列头画一个checkbox, 并给其一个事件. 这个之前很多blog都有写, 这里就不多废话了,  codeproject上面有示例代码. 这里我们再多做一层的封装,将其封装成一个控件,这样的话, 我们就可以最大程度上的复用, 而不需要老是重复写同样的, 无聊的代码了! 思路如下: 继承DataGridViewCheckBoxColumn类, 更改它的headerCell的样式. 添加cellValueChanged时间,使在进行

关于Winform下DataGridView中实现checkbox全选反选、同步列表项的处理

近期接手一个winform 项目,虽然之前有.net 的经验,但是对一些控件的用法还不是很熟悉. 这段时间将会记录一些在工作中遇到的坎坷以及对应的解决办法,写出来与大家分享并希望大神提出更好解决方法来促进进步. 我也会尽可能把我查找到资料的出处引出来,以此来感恩对我提供帮助的人们. 正题如下 一.关于Winform下DataGridView中实现checkbox全选反选.同步列表项的处理 1.checkbox的添加:在设计页面选择编辑列在新添加的列中注意如下几个属性: SortMode = No

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

关于列表中checkbox选中,全选/反选设置

关于列表中checkbox选中,全选设置 1 <html> 2 <head> 3 <script type="text/javascript"> 4 //点击行时,checkbox处理方法 5 function doclick(id){ 6 var allche = document.getElementById("allid");//全选checkbox 7 var che = document.getElementsByNam

DataGridView 中添加CheckBox和常用处理方式 .

DataGridView 中添加CheckBox和常用处理方式 文章1 转载:http://blog.csdn.net/pinkey1987/article/details/5267934 DataGridView中添加CheckBox控件主要采用两种方法 1.  通过在DataGridView的Columns中添加System.Windows.Forms.DataGridViewCheckBoxColumn类型的列.并可以设置该列相关的属性信息. 2. 在程序代码中直接添加相应的代码 Syst

前端checkbox默认勾选状态的判断

最近迭代版本的 加了一个新功能 每一条数据有一个checkbox 然后后端传过来的是 每条数据的名字的字符串 并不是ID 然后根据名字去给他加默认有勾选状态或者没有勾选状态 input.checked = (给你传的名字.indexOf(每一条数据的名字)<0) 当然 checked的值 只是ture 或者false 你还需要在其他地方判断一下 if(checked){ <input type="checkbox" checked class="campaigng

GridView中根据CheckBox选中的行取出某列的值

根据CheckBox选中的行取出某列的值: for (int i = 0; i < this.GridView1.Rows.Count; i++) { CheckBox ckb = (CheckBox)this.GridView1.Rows[i].Cells[0].FindControl("CheckBox1"); if (ckb.Checked) { huohao =Convert.ToInt32(this.GridView1.Rows[i].Cells[2].Text); s

Ztree _ 横向显示子节点、点击文字勾选、去除指定元素input的勾选状态

前些天项目需要树结构表现数据,需求ztree就能满足所以直接使用ztree只是踩了些小坑... 1.ztree子节点横向显示(下图): 效果说明:第三级子节点按需求横向显示其他竖向显示,每行最多显示5个(修改位置在zTreeStyle.css里面哦,在外面设置不上的,页面也获取不到想要设置样式的节点...如果你能还望赐教)代码如下: 1 .ztree>li>ul>li>ul>li>ul{overflow:hidden;} 2 .ztree>li>ul>