陈程的技术博客

  • 关于作者
全栈软件工程师
一个专注于技术研究创新的程序员
  1. 首页
  2. .NET
  3. 正文

DevExpress控件-GridControl控件中添加一列复选框并进行相关操作

2016年3月10日 666点热度 0人点赞 0条评论

GridControl 控件中自带有复选框,而不需要自己另外加一列CheckBox。

但是操作这个复选框确实相当的蛋疼,它没有相关的事件处理,我到官网去查了下,官网采用的是重新写一个控件的所有操作方法。

需要去官网的:传送门

个人认为过于麻烦,重新写了一个简单的方法来操作,

具体操作如下:

1.设置GridControl 控件里面的子控件GridView中OptionSelection属性,如图1:

MultiSelect设置为true

MultiSelectMode设置为CheckBoxRowSelect

2.点击事件操作的方法,代码如下:

private void gridCtrlContrDealSum_MouseUp(object sender, MouseEventArgs e)
       {
           try
           {
               //获取鼠标操作的行
               DevExpress.XtraGrid.Views.Grid.ViewInfo.GridHitInfo hi = gridViewContrDealSum.CalcHitInfo(new Point(e.X, e.Y));

               if (hi.RowHandle < 0 && hi.Column == null)
               {
                   return;
               }

               //标题行中复选框默认名字是Selection
               if (hi.Column.Caption == "Selection")
               {
                   //选择的行
                   int[] selectedRow = gridViewContrDealSum.GetSelectedRows();
                   //点击全选,或取消全选
                   if (hi.RowHandle < 0)
                   {
                       int count = gridViewContrDealSum.RowCount;
                       if (selectedRow.Length == count)
                       {
                           //取消全选
                           gridCtrlDealList.DataSource = null;
                       }
                       else
                       {
                           //全选
                           contractCodes = new List<string>();
                           SetClickGrid(this.controller.GetRecordList());
                       }
                   }
                   else
                   {
                       //选择行的数量小于1
                       if (selectedRow.Length < 1)
                       {
                           gridCtrlDealList.DataSource = null;
                           return;
                       }

                       contractCodes = new List<string>();
                       //contractCodes这边是用一个List来存储被选中行gcc_Contract_Code的值
                       for (int i = 0; i < selectedRow.Length; i++)
                       {
                           string value = gridViewContrDealSum.GetRowCellValue(selectedRow[i], gcc_Contract_Code).ToString();
                           contractCodes.Add(value);
                       }
                       //重新绑定数据
                       SetClickGrid(this.controller.GetRecordList());
                   }
               }
           }
           catch (Exception ex)
           {
               LoggingHelper.Error(ex.Message);
           }
       }

至于为什么要用MouseUp这个事件,大家可以自行尝试下其他方法。

3.怎么设置默认全选还是取消全选,在开始绑定完数据的时候,加上下面代码:

for (int i = 0; i < gridViewContrDealSum.RowCount; i++)
{
    gridViewContrDealSum.SelectRow(i);
}

好的,方法介绍完毕,发个样子图给大家看看,图2。

 

标签: DevExpress
最后更新:2021年4月1日

博主

全栈工程师,侧重项目技术解决方案规划和开发

打赏 点赞
< 上一篇
下一篇 >

文章评论

取消回复

分类
  • .NET (65)
  • docker (3)
  • linux (12)
  • python (20)
  • web (14)
  • 小程序 (4)
  • 数据库 (2)
  • 未分类 (4)
  • 杂七杂八 (10)
标签聚合
linux nginx centos js winform DevExpress C# python
最新 热点 随机
最新 热点 随机
.NET开发手册标准参考 招募兼职前端开发 Centos安装dotnet6环境 VS上切换分支,vs编译运行出现bug,A fatal error was encountered彻底解决方案 用C#封装一个线程安全的缓存器,达到目标定时定量更新入库 C#通过特性的方式去校验指定数据是否为空
NPOI读写execl 检测图片是否是空白页,GetPixel高效处理 小程序-上传图片功能 nginx配置命令 DevExpress控件-使用ToolTipController控件 微信小程序 音频播放功能createInnerAudioContext

COPYRIGHT © 2021 陈程的技术博客. ALL RIGHTS RESERVED.

THEME KRATOS MADE BY VTROIS