关键代码:

        /// <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);
        }

代码效果:

最新文章

  1. 2、NASA HS3(Hurricane AND Server Storm Sentinel)
  2. HDFS 和YARN HA 简介
  3. button 边框
  4. webapp项目前端总结
  5. [bzoj 1911][Apio 2010]特别行动队(斜率优化DP)
  6. Ksoap2 获取webservice返回值的getResponse() 出现的问题
  7. 缓存应用--Memcached分布式缓存简介
  8. SQL Server存储内幕系列
  9. cmd连接mysql连接:mysql-h主机地址-u用户名-p用户密码(注:u与root可以不用加)
  10. Hibernate 性能优化之抓取策略
  11. 用CSS3实现对图片的放大效果
  12. 12c meet sysdba meet ORA-01017: invalid username/password; logon denied
  13. Linux网络那点事
  14. AngularJS系列-翻译官网
  15. c#中的Out, params,ref 细说并沉淀
  16. TensorFlow at Google I/O 2018
  17. 开源API测试工具 Hitchhiker v0.10 - 中文版
  18. Nmap 7.70新增功能——扫描主机所有IP
  19. 在线学习和在线凸优化(online learning and online convex optimization)—基础介绍1
  20. [日常] Go语言圣经-文本和HTML模板习题

热门文章

  1. MySQL锁系列1
  2. 《Linux内核设计与实现》读书笔记
  3. SQLite数据库中获取新插入数据的自增长ID
  4. selenium python 环境搭建(64位 windows)
  5. DAG上动态规划
  6. DefaultSingletonBeanRegistry extends SimpleAliasRegistry implements SingletonBeanRegistry
  7. css笔记13:display用法
  8. Objective-C ,ios,iphone开发基础:几个常用类-NSNumber
  9. [转]网站优化-IIS7下静态文件的优化
  10. java之enum枚举(2015年05月28日)