参考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. infopath 2007 升级到2013 栏目字段重复生成问题

    1. 把Expense Statement.xsn的xsn扩展名改成zip.然后解压后会看到有一个mnifest.xsf. 2. 在vs 2013 中打开它. 3. Search for the fi ...

  2. Let it crash philosophy part II

    Designing fault tolerant systems is extremely difficult.  You can try to anticipate and reason about ...

  3. Android 获取模拟器与真机数据库

    模拟器: localuser:~ localhost$ adb shell shell@android:/ $ su // 数据库复制到 Download 下 shell@android:/ # cp ...

  4. django系列3.4-- request对象和response对象(未完待续)

    一.request对象 详细信息可以查阅django官方文档 共有五种请求相关的常用值 request.path_info 返回用户访问的url不包括域名 request.method 请求中使用的H ...

  5. mysql--对行(表中数据)的增删改查

    一.插入数据(增加)insert 1.插入数据(顺序插入) 语法一: INSERT INTO 表名(字段1,字段2,字段3…字段n) VALUES(值1,值2,值3…值n); #指定字段来插入数据,插 ...

  6. “全栈2019”Java第九十四章:局部内部类详解

    难度 初级 学习时间 10分钟 适合人群 零基础 开发语言 Java 开发环境 JDK v11 IntelliJ IDEA v2018.3 文章原文链接 "全栈2019"Java第 ...

  7. java异常术语

    .检查性异常: 不处理编译不能通过 .非检查性异常:不处理编译可以通过,如果有抛出直接抛到控制台(所有RuntimeException的派生类都是非检查型异常) .非运行时异常: 就是检查性异常4.运 ...

  8. Windows 如何完整备份驱动

    软件:DriverBackUp 系统环境:Windows7 首先将DriverBackUp.exe放到桌面,然后运行,我们会看到提示信息提示我们驱动程序被备份到了D盘 然后我们会看到备份界面 这里我们 ...

  9. java使用Redis4--主从复制

    redis主从复制配置和使用都非常简单.通过主从复制可以允许多个slave server拥有和master server相同的数据库副本.下面是关于redis主从复制的一些特点:       1.ma ...

  10. mxonline实战16:首页配置和xadmin进阶,Ueditor

      对应github地址:第16天   一. 首页配置 1. courses/models.py -->class Course增加字段,迁移数据库