[DevExpress]GridControl 同步列头checkbox与列中checkbox状态
关键代码:
/// <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状态的更多相关文章
- WPF DataGrid点击列头选择全列并具有背景色
完成这个操作,主要是XAML的代码. 主要思路是通过绑定多路数据,在多路转换器中返回布尔值,在通过数据触发器来设置被选择的全列的背景色. XAML页面主要代码 首先定义DataGridCell < ...
- easyui动态生成双列头
实习时老大交给任务,让我做这样一个效果,选择日期并点击查询时,动态生成列头,下一列要求对应日期的星期. 效果图: 下面贴出查询的单击函数: //查询按钮 function queryByDate(){ ...
- PHP:数字转Excel列头
转自我的个人博客:阔野飞花 http://www.rexcao.net/archives/169 前段时间升级一个项目的Excel导出功能,这次的列数大概有60多条,在处理过程中发现一个问题,原先做好 ...
- DevExpress GridControl使用(转)
DevExpress GridControl使用 (一)原汁原味的表格展示 Dev控件中的表格控件GridControl控件非常强大.不过,一些细枝末节的地方有时候用起来不好找挺讨厌的.使用过程中,多 ...
- [DevExpress]GridControl 列头绘制Checkbox
关键代码: /// <summary> /// 为列头绘制CheckBox /// </summary> /// <param name="view" ...
- 实现在DevExpress.XtraGrid.GridControl的列头绘制复选框以实现全选的功能
首先新建一个Win Form测试项目,拖一个GridControl控件到窗体上. public partial class Form1 : Form { public Form1() { Initia ...
- gridcontrol的列头右键菜单问题
Dev控件GridControl设置了一个右键菜单 this.gridControl1.ContextMenu = contextMenu2; 而GridControl在运行排序的时候,即 gridv ...
- Winform DataGridView添加列头checkbox
using System; using System.Data; using System.Drawing; using System.Windows.Forms; using Yanwen.Logi ...
- dev gridControl 自定义绘制列头颜色
1.添加事件CustomDrawColumnHeader private void gvw1_CustomDrawColumnHeader(object sender, DevExpress.Xtra ...
随机推荐
- Java_Utils框架
Spring Utils https://github.com/tangyanbo/springmore
- HttpServer的使用
http://docs.oracle.com/javase/8/docs/jre/api/net/httpserver/spec/overview-summary.html 1.Package com ...
- 小白日记18:kali渗透测试之缓冲区溢出实例(二)--Linux,穿越火线1.9.0
Linux系统下穿越火线-缓冲区溢出 原理:crossfire 1.9.0 版本接受入站 socket 连接时存在缓冲区溢出漏洞. 工具: 调试工具:edb: ###python在漏洞溢出方面的渗透测 ...
- cocos2d-x调度器原理
程序运行后每达到一帧的时间间隔就会执行一次mainLoop void CCDisplayLinkDirector::mainLoop(void) { //判断是否需要释放CCDirector,通常游戏 ...
- Emacs 配置 Python 编程环境
python编程环境设置涉及到:自动完成.语法检查.虚拟环境. 为了不把系统搞乱,在python的虚拟环境中安装相关的插件. 一.安装python虚拟环境 virtualenvwrapper sudo ...
- 1045 | error connecting to master 'slave_user@192.168.0.75:3306' - retry-time: 6
mysql 主从复制问题整理 问题: 1045 | error connecting to master 'slave_user@192.168.0.75:3306' - retry-t ...
- MySQL多实例配置
实验环境:RHEL6.4为最小化安装,mysql安装包为通用二进制安装包,版本为mysql-5.6.26 创建mysql用户 #useradd –M –s /sbin/nologin mysql #y ...
- CF Exam (数学)
Exam time limit per test 1 second memory limit per test 256 megabytes input standard input output s ...
- poj 2723 2-SAT问题
思路:二分枚举能开的门的数量,将每次枚举转换成2-SAT问题.这里存在的矛盾是假设有门上a,b两个锁,a锁对应于1号钥匙,而一号钥匙的配对是2号钥匙,b锁对应于3号钥匙,3号的配对是4号钥匙.那么2号 ...
- hdu 4612 边连通度缩点+树的最长路径
思路:将以桥为分界的所有连通分支进行缩点,得到一颗树,求出树的直径.再用树上的点减去直径,再减一 #pragma comment(linker, "/STACK:1024000000,102 ...