Devexpress GridView增加CheckBox列
参考DEV官网代码做了一个增加checkbox列效果:
#region 方法:设置GridView数据绑定
public void GridDataBind()
{
dt = dbHelper.Fill(cmdStr); // 填充DataTable
dt.Columns.Add("Check", typeof(bool)); // 增加个CheckBox列
dt.Columns["Check"].SetOrdinal(0); // 设置选择列的位置
for (int i = 0; i < dt.Rows.Count; i++)
{
dt.Rows[i]["Check"] = false;
}
gridControl1.DataSource = dt;
gridView1.Columns["Check"].Width = 22;
gridView1.Columns["Check"].OptionsColumn.ShowCaption = false;
gridView1.Columns["Check"].OptionsColumn.AllowSort = DevExpress.Utils.DefaultBoolean.False;
}
#endregion
===================================================================================
#region GridView增加CheckBox列相关代码
protected void DrawCheckBox(Graphics g, Rectangle r, bool Checked)
{
DevExpress.XtraEditors.ViewInfo.CheckEditViewInfo info;
DevExpress.XtraEditors.Drawing.CheckEditPainter painter;
DevExpress.XtraEditors.Drawing.ControlGraphicsInfoArgs args;
info = chkEdit.CreateViewInfo() as DevExpress.XtraEditors.ViewInfo.CheckEditViewInfo;
painter = chkEdit.CreatePainter() as DevExpress.XtraEditors.Drawing.CheckEditPainter;
info.EditValue = Checked;
info.Bounds = r;
info.PaintAppearance.ForeColor = Color.Black;
info.CalcViewInfo(g);
args = new DevExpress.XtraEditors.Drawing.ControlGraphicsInfoArgs(info, new DevExpress.Utils.Drawing.GraphicsCache(g), r);
painter.Draw(args);
args.Cache.Dispose();
}
private void gridView_CustomDrawRowIndicator(object sender, RowIndicatorCustomDrawEventArgs e)
{
e.Appearance.TextOptions.HAlignment = HorzAlignment.Far;
if (e.Info.IsRowIndicator)
{
if (e.RowHandle >= 0)
{
e.Info.DisplayText = (e.RowHandle + 1).ToString(CultureInfo.InvariantCulture);
}
else if (e.RowHandle < 0 && e.RowHandle > -1000)
{
e.Info.Appearance.BackColor = Color.AntiqueWhite;
e.Info.DisplayText = "G" + e.RowHandle;
}
}
}
private void gridView_CustomDrawColumnHeader(object sender, ColumnHeaderCustomDrawEventArgs e)
{
if (e.Column == (sender as GridView).Columns["Check"])
{
e.Info.InnerElements.Clear();
e.Info.Appearance.ForeColor = Color.Blue;
e.Painter.DrawObject(e.Info);
DrawCheckBox(e.Graphics, e.Bounds, GetCheckedCount() == gridView1.DataRowCount);
//DrawCheckBox(e.Graphics, e.Bounds, false);
e.Handled = true;
}
}
private void gridView_MouseUp(object sender, MouseEventArgs e)
{
if (e.Clicks == 1 && e.Button == MouseButtons.Left)
{
GridHitInfo gridHitInfo;
Point point = gridView1.GridControl.PointToClient(Control.MousePosition);
gridHitInfo = gridView1.CalcHitInfo(point);
if (gridHitInfo.InColumn && gridHitInfo.Column.FieldName == "Check")
{
if (GetCheckedCount() == gridView1.DataRowCount)
{
UnCheckAll();
}
else
{
CheckAll();
}
}
if (gridHitInfo.InRow && gridHitInfo.InRowCell == true)
{
if (Convert.ToBoolean(gridView1.GetFocusedRowCellValue("Check")) == false)
{
CheckSingle();
}
else
{
UnCheckSingle();
}
}
}
}
private int GetCheckedCount() // 获取到已选择的数量
{
int count = 0;
for (int i = 0; i < gridView1.DataRowCount; i++)
{
if ((bool)gridView1.GetRowCellValue(i, gridView1.Columns["Check"]) == true)
{
count++;
}
}
return count;
}
private void CheckAll() // 选择全部
{
for (int i = 0; i < gridView1.DataRowCount; i++)
{
gridView1.SetRowCellValue(i, gridView1.Columns["Check"], true);
}
}
private void UnCheckAll() // 反选全部
{
for (int i = 0; i < gridView1.DataRowCount; i++)
{
gridView1.SetRowCellValue(i, gridView1.Columns["Check"], false);
}
}
private void CheckSingle() // 选择一个
{
gridView1.SetRowCellValue(gridView1.FocusedRowHandle, gridView1.Columns["Check"], true);
}
private void UnCheckSingle() // 反选一个
{
gridView1.SetRowCellValue(gridView1.FocusedRowHandle, gridView1.Columns["Check"], false);
}
#endregion
======================================================================
在窗体加载事件里的代码:
private void MainForm_Load(object sender, EventArgs e)
{
#region 从本地数据库中获取数据 并展示到gridView控件上
GridDataBind();
#endregion
#region 设置gridview列只读(不能编辑)
for (int i = 1; i < gridView1.Columns.Count; i++)
{
gridView1.Columns[i].OptionsColumn.ReadOnly = true;
}
#endregion
}
Devexpress GridView增加CheckBox列的更多相关文章
- 在DBGrid增加一列CheckBox(而非DBCheckBox)
自:http://rabbitfox.blog.sohu.com/33264033.html http://community.csdn.net/Expert/topic/5342/5342920.x ...
- DevExpress GridView属性说明
转自http://www.cnblogs.com/-ShiL/archive/2012/06/08/ShiL201206081335.html (一)双击展开,收缩字表 1 Private Sub E ...
- DevExpress Grid使用checkBox选中的方法
到官网得到消息自13.2版本后的Dev Grid中均内置了CheckBox列多选功能.在寻找答案的过程的成果进行记录. 一.13.2版本以后用法 启用多选列 对Gird中的View进行以下属性设置: ...
- DevExpress GridView 整理(转)
DevExpress GridView 那些事儿 1:去除 GridView 头上的 "Drag a column header here to group by that column&q ...
- DevExpress GridView 那些事儿
1:去除 GridView 头上的 "Drag a column header here to group by that column" --> 点击 Run Desig ...
- DevExpress GridView 整理
1:去除 GridView 头上的 "Drag a column header here to group by that column" --> 点击 Run Desig ...
- gridview动态添加列的问题
相信大家也和我一样遇到过这种问题,gridview在生成列的时候当列不确定怎么办?下面分享一下自己的解决方法. 举个列子说明一下. 普通列的添加比较简单. BoundField bf = new Bo ...
- DevExpress gridview下拉框的再次研究
原文:DevExpress gridview下拉框的再次研究 前几天写了一篇关于研究DevExpress gridview下拉框的随笔(DevExpress gridview下拉框repository ...
- DEVEXPRESS GRIDVIEW 代码添加按钮(转)
https://www.cnblogs.com/qq-xiao/p/6122573.html 1.1 创建一个RepositoryItemButtonEdit方法 1 private Reposito ...
随机推荐
- C#中实现对象的深拷贝
深度拷贝指的是将一个引用类型(包含该类型里的引用类型)拷贝一份(在内存中完完全全是两个对象,没有任何引用关系).......... 直接上代码: /// <summary> /// 对象的 ...
- iOS 获取 UITabViewController 和 UINavigationController 的图标位置
这些图标是放在 UITabBar 和 UINavigationBar 里的.所以只要遍历它们的 subViews,找到类型是 UIButton 的就可以了. 所有想获取它们的相对位置很容易. 获取到相 ...
- Android 屏幕适应
基础知识: 屏幕密度: Density-independent pixel (dp):密度无关像素单位(一个相对的值).1dp 的大小相当于一个 160 dpi 屏幕上一个像素的大小. 计算方法:px ...
- PHP中运算符优先级
运算符优先级指定了两个表达式绑定得有多“紧密”.例如,表达式 1 + 5 * 3 的结果是 16 而不是 18 是因为乘号(“*”)的优先级比加号(“+”)高.必要时可以用括号来强制改变优先级.例如: ...
- 【表单验证】基于jQuery的高度灵活的表单验证(无UI)
表单验证是前端开发过程中常见的一个需求,产品需求.业务逻辑的不同,表单验证的方式方法也有所区别.而最重要的是我们要清楚,表单验证的核心原则是--错误信息提示准确,并且尽可能少的打扰/干扰用户的输入和体 ...
- K:java中的安全模型(沙箱机制)
本博文整合自:Java安全--理解Java沙箱.Java 安全模型介绍.Java的沙箱机制原理入门 相关介绍: 我们都知道,程序员编写一个Java程序,默认的情况下可以访问该机器的任意资源,比如读取 ...
- psp0级报告
计划 1.1需求描述: 现在市场上有很多的面向小学生的题卡,但是这习题卡不但价格昂贵,而且每次做题的内容基本都是固定.针对这些问题,开发出了这款网页在线答题系统,每次的题目都有所不同,可以跟快更好提高 ...
- C#-WebForm-JS知识:基础部分、BOM部分、DOM部分、JS事件
一.基础部分: 1.JavaScript 是什么? 是一门脚本语言,是属于弱类型(语言语法很随意),C#是强类型(语言语法非常严格)(李献策lxc) 优点:JS 执行速度快 2.JS 与java有什么 ...
- WampServer访问出现403forbidden的问题解决
1,软件装上以后出现所有服务运行,80端口未被占用的情况下服务器一直处于离线状态 解决方案如下: 网络上面很多教程多说切换服务器为在线状态即可,但是我发现我的菜单里面并没有,用命令又嫌麻烦 在图表上面 ...
- python 报错: Dog() takes no arguments
后来上网找了一下.发现是 构造方法 __init__ 两边的下划线是双下划线,我写的是单下划线. 读书不认真,该打. 特此记录.