参考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列的更多相关文章

  1. 在DBGrid增加一列CheckBox(而非DBCheckBox)

    自:http://rabbitfox.blog.sohu.com/33264033.html http://community.csdn.net/Expert/topic/5342/5342920.x ...

  2. DevExpress GridView属性说明

    转自http://www.cnblogs.com/-ShiL/archive/2012/06/08/ShiL201206081335.html (一)双击展开,收缩字表 1 Private Sub E ...

  3. DevExpress Grid使用checkBox选中的方法

    到官网得到消息自13.2版本后的Dev Grid中均内置了CheckBox列多选功能.在寻找答案的过程的成果进行记录. 一.13.2版本以后用法 启用多选列 对Gird中的View进行以下属性设置: ...

  4. DevExpress GridView 整理(转)

    DevExpress GridView 那些事儿 1:去除 GridView 头上的 "Drag a column header here to group by that column&q ...

  5. DevExpress GridView 那些事儿

    1:去除 GridView 头上的 "Drag a column header here to group by that column" -->  点击 Run Desig ...

  6. DevExpress GridView 整理

    1:去除 GridView 头上的 "Drag a column header here to group by that column" -->  点击 Run Desig ...

  7. gridview动态添加列的问题

    相信大家也和我一样遇到过这种问题,gridview在生成列的时候当列不确定怎么办?下面分享一下自己的解决方法. 举个列子说明一下. 普通列的添加比较简单. BoundField bf = new Bo ...

  8. DevExpress gridview下拉框的再次研究

    原文:DevExpress gridview下拉框的再次研究 前几天写了一篇关于研究DevExpress gridview下拉框的随笔(DevExpress gridview下拉框repository ...

  9. DEVEXPRESS GRIDVIEW 代码添加按钮(转)

    https://www.cnblogs.com/qq-xiao/p/6122573.html 1.1 创建一个RepositoryItemButtonEdit方法 1 private Reposito ...

随机推荐

  1. WPF解决方案------调用线程无法访问此对象,因为另一个线程拥有该对象

    WPF [调用线程无法访问此对象,因为另一个线程拥有该对象.] 解决方案 在这里以播放图片为例进行说明,代码如下: void _Timer_Elapsed(object sender, Elapsed ...

  2. UWP开发入门(二)——RelativePanel

    RelativePanel也是Win10 UWP新增的控件,和上篇提到的SplitView一样在UWP的UI布局起到非常重要的作用.说句实在话,这货其实就是为了UWP的Adaptive UI而特意增加 ...

  3. Eclipse导出JAR过程

    Eclipse是一款免费的JAVA开发环境,被各个软件公司使用,可以说是目前使用最多的JAVA开发工具了,网址:http://www.eclipse.org 下面演示如何建立JAVA工程和导出JAR: ...

  4. 爬取lol皮肤

    #!/usr/bin/python # -*- coding: utf-8 -*- # data:2018-11-23 # user:fei import re import requests imp ...

  5. Pangolin库的使用

    使用Pangolin画出相机的轨迹(包括朝向). 数据集结构data.csv: #timestamp, p_RS_R_x [m], p_RS_R_y [m], p_RS_R_z [m], q_RS_w ...

  6. jmeter ——JDBC Request中从数据库中读两个字段给接口取值

    前置条件数据库: 给接口传:tid和shopid这俩字段 直接从JDBC Request开始: Variable name:这里写入数据库连接池的名字(和JDBC Connection Configu ...

  7. Error:(1, 1) 错误: 需要class, interface或enum

    这个东西在Ideal里面报的错误,在控制台提示: Error:(1, 1) 错误: 需要class, interface或enum 网上搜到说是编码问题,我的解决方式: 把出错的文件选中复制一份,再随 ...

  8. 用AndroidSDK中的Face Detector实现人脸识别

    很多手机图片管理应用都开始集成人脸识别功能.一提到人脸识别,模式识别,滤波,BlahBlah 一堆复杂的技术名字戳入脑海中,立刻觉得这玩意儿没法碰,太玄乎了.其实Android SDK从1.0版本中( ...

  9. 完美原创:centos7.1 从源码升级安装Python3.5.2

    (原创)完美原创:centos7.1 从源码升级安装Python3.5.2 下载Python3.5.2源码:https://www.python.org/downloads/release/pytho ...

  10. (转)InnoDB存储引擎MVCC实现原理

    InnoDB存储引擎MVCC实现原理 原文:https://liuzhengyang.github.io/2017/04/18/innodb-mvcc/ 简单背景介绍 MySQL MySQL是现在最流 ...