关键代码:

        /// <summary>
        /// 同步列头checkbox与列中checkbox状态
        /// </summary>
        /// <param name="view">GridView</param>
        /// <param name="fieldeName">需要绘制Checkbox的列名</param>
        /// <param name="e">MouseEventArgs</param>
        public static void SyncCheckStatus(this GridView view, string fieldeName, MouseEventArgs e)
        {
            /*说明:
             *在MouseDown事件中使用
             *参考:https://www.devexpress.com/Support/Center/Question/Details/Q354489
             *eg:
             *private void gvLampConfig_MouseDown(object sender, MouseEventArgs e)
             *{
             *GridView _view = sender as GridView;
             *_view.SyncCheckStatus(gcCheckFieldName, e);
             *}
             */
            if (e.Clicks == 1 && e.Button == MouseButtons.Left)
            {
                view.ClearSorting();
                view.PostEditor();
                GridHitInfo _info;
                Point _pt = view.GridControl.PointToClient(Control.MousePosition);
                _info = view.CalcHitInfo(_pt);
                if (_info.InColumn && _info.Column.FieldName.Equals(fieldeName))
                {
                    if (getCheckedCount(view, fieldeName) == view.DataRowCount)
                        UnChekAll(view, fieldeName);
                    else
                        CheckAll(view, fieldeName);
                }
            }
        }
        private static int getCheckedCount(GridView view, string filedName)
        {
            int count = 0;
            for (int i = 0; i < view.DataRowCount; i++)
            {
                object _cellValue = view.GetRowCellValue(i, view.Columns[filedName]);
                //if (_cellValue != null && !(_cellValue is DBNull))
                if (_cellValue == null) continue;
                if (string.IsNullOrEmpty(_cellValue.ToString().Trim())) continue;
                bool _checkStatus = false;
                if (bool.TryParse(_cellValue.ToString(), out _checkStatus))
                {
                    //if ((bool)_cellValue)
                    if (_checkStatus)
                        count++;
                }
            }
            return count;
        }
        private static void CheckAll(GridView view, string fieldName)
        {
            for (int i = 0; i < view.DataRowCount; i++)
            {
                view.SetRowCellValue(i, view.Columns[fieldName], true);
            }
        }
        private static void UnChekAll(GridView view, string fieldName)
        {
            for (int i = 0; i < view.DataRowCount; i++)
            {
                view.SetRowCellValue(i, view.Columns[fieldName], false);
            }
        }

代码使用:

        private void gvLampConfig_MouseDown(object sender, MouseEventArgs e)
        {
            GridView _view = sender as GridView;
            _view.SyncCheckStatus(gcCheckFieldName, e);
        }

代码效果:

[DevExpress]GridControl 同步列头checkbox与列中checkbox状态的更多相关文章

  1. WPF DataGrid点击列头选择全列并具有背景色

    完成这个操作,主要是XAML的代码. 主要思路是通过绑定多路数据,在多路转换器中返回布尔值,在通过数据触发器来设置被选择的全列的背景色. XAML页面主要代码 首先定义DataGridCell < ...

  2. easyui动态生成双列头

    实习时老大交给任务,让我做这样一个效果,选择日期并点击查询时,动态生成列头,下一列要求对应日期的星期. 效果图: 下面贴出查询的单击函数: //查询按钮 function queryByDate(){ ...

  3. PHP:数字转Excel列头

    转自我的个人博客:阔野飞花 http://www.rexcao.net/archives/169 前段时间升级一个项目的Excel导出功能,这次的列数大概有60多条,在处理过程中发现一个问题,原先做好 ...

  4. DevExpress GridControl使用(转)

    DevExpress GridControl使用 (一)原汁原味的表格展示 Dev控件中的表格控件GridControl控件非常强大.不过,一些细枝末节的地方有时候用起来不好找挺讨厌的.使用过程中,多 ...

  5. [DevExpress]GridControl 列头绘制Checkbox

    关键代码: /// <summary> /// 为列头绘制CheckBox /// </summary> /// <param name="view" ...

  6. 实现在DevExpress.XtraGrid.GridControl的列头绘制复选框以实现全选的功能

    首先新建一个Win Form测试项目,拖一个GridControl控件到窗体上. public partial class Form1 : Form { public Form1() { Initia ...

  7. gridcontrol的列头右键菜单问题

    Dev控件GridControl设置了一个右键菜单 this.gridControl1.ContextMenu = contextMenu2; 而GridControl在运行排序的时候,即 gridv ...

  8. Winform DataGridView添加列头checkbox

    using System; using System.Data; using System.Drawing; using System.Windows.Forms; using Yanwen.Logi ...

  9. dev gridControl 自定义绘制列头颜色

    1.添加事件CustomDrawColumnHeader private void gvw1_CustomDrawColumnHeader(object sender, DevExpress.Xtra ...

随机推荐

  1. 15分钟学会git基本的操作命令

    http://hao.jobbole.com/try-git/ 假如你现在新创建了一个项目,想把它提交到github上面? 假设你创建好了一个项目,并切换到项目的根目录下面: $ git status ...

  2. MYSQL内存--------启动mysql缓存机制,实现命中率100% 转

    虽然这个标题夸张得过了头,但此文很完整,值得学习.转自 http://www.yy520.net/read.php?278 myql优化,启动MySQL缓存机制,实现命中率100% 配置你的mysql ...

  3. mysql 支持emoji

    1.修改my.cnf [client] default-character-set = utf8mb4 [mysqld] collation-server = utf8mb4_unicode_ci c ...

  4. C++_快速排序(纯C版本)

    //比较大小 static int compare_int(const void *int1,const void *int2) { if(*(const int*)int1>*(const i ...

  5. php中var_export与var_dump的区别分析

    一 var_dump (PHP 3 >= 3.0.5, PHP 4, PHP 5) var_dump -- 打印变量的相关信息 描述 void var_dump ( mixed expressi ...

  6. JQuery EasyUI 之 DataGrid

    1.动态创建datagrid 在页面上添加一个div或table标签,然后用jquery获取这个标签,并初始化一个datagrid.代码如下: (1)页面上添加div标签 <div id=&qu ...

  7. openshift django目录结果

    blog├── README.md├── requirements.txt├── setup.py├── static├── wsgi│   ├── application│   ├── db.sql ...

  8. <Think Complexity> 用字典实现图

    今天在图书馆闲逛的时候偶然看见<Think Complexity>(复杂性思考)这本书,下午看了一会儿觉得很有意思.本书第二章讲的是用Python实现的图,特别写篇博客记录.   首先,图 ...

  9. Scala中的类和对象

    类的定义 使用class定义 类的字段 在类中使用var,val定义字段 类的方法 scala中,使用var定义字段默认提供setter和getter方法对应名称为 value_= 和value /* ...

  10. Netty学习链接

    Netty实战精髓请参见:https://waylau.gitbooks.io/essential-netty-in-action/content/GETTING%20STARTED/Introduc ...