【C#】GridControl增加“选择”(不用二次点击)

系列文章

【C#】编号生成器(定义单号规则、固定字符、流水号、业务单号)
本文链接:https://blog.csdn.net/youcheng_ge/article/details/129129787

【C#】日期范围生成器(开始日期、结束日期)
本文链接:https://blog.csdn.net/youcheng_ge/article/details/129040663

【C#】组件化开发,调用dll组件方法
本文链接:https://blog.csdn.net/youcheng_ge/article/details/129492112

【C#】数据实体类使用
本文链接:https://blog.csdn.net/youcheng_ge/article/details/128816638

【C#】单据审批流方案
本文链接:https://blog.csdn.net/youcheng_ge/article/details/128972545

【C#】简单二维码制作和打印
本文链接:https://blog.csdn.net/youcheng_ge/article/details/126884228

【C#】最全单据打印源码(打印模板、条形码&二维码、字体样式)
本文链接:https://blog.csdn.net/youcheng_ge/article/details/129415723

【C#】条码管理操作手册
本文链接:https://blog.csdn.net/youcheng_ge/article/details/126589496

【C#】IIS平台下,WebAPI发布及异常处理
本文链接:https://blog.csdn.net/youcheng_ge/article/details/126539836

【C#】【提高编程效率】代码模板生成工具
本文链接:https://blog.csdn.net/youcheng_ge/article/details/126890673

【C#】【提高编程效率】Excel数据批量导入数据库
本文链接:https://blog.csdn.net/youcheng_ge/article/details/126427323

【C#】Windows服务(Service)安装及启停方案
本文链接:https://blog.csdn.net/youcheng_ge/article/details/124053794

【C#】穿透Session隔离,服务调用外部程序(无窗体界面解决)
本文链接:https://blog.csdn.net/youcheng_ge/article/details/124053033

【C#】任务计划实现,使用Quartz类
本文链接:https://blog.csdn.net/youcheng_ge/article/details/123667723

【C#】《周计划管理关于产前准备模块》解决方案20200203
本文链接:https://blog.csdn.net/youcheng_ge/article/details/122919543

【C#】源码解析正则表达式
本文链接:https://blog.csdn.net/youcheng_ge/article/details/118337074

【C#】软件版本和文件MD5记录(XML操作)
本文链接:https://blog.csdn.net/youcheng_ge/article/details/112513871

【C#】测试网络是否连通
本文链接:https://blog.csdn.net/youcheng_ge/article/details/110137288

【C#】根据名称获取编码(Dictionary获取key方法)
本文链接:https://blog.csdn.net/youcheng_ge/article/details/129816701

【C#】数据建模,你是使用DataTable还是List?
本文链接:https://blog.csdn.net/youcheng_ge/article/details/129792726

【C#】GridControl控件和数据集双向绑定
本文链接:https://blog.csdn.net/youcheng_ge/article/details/129423755

【C#】GridControl动态更换DataSource,数据查询异常处理
本文链接:https://blog.csdn.net/youcheng_ge/article/details/130305424

【C#】GridControl日期字段显示时分秒
本文链接:https://blog.csdn.net/youcheng_ge/article/details/130718303

【C#】GridControl增加选择列(不用二次点击)
本文链接:https://blog.csdn.net/youcheng_ge/article/details/130763713



前言

我能抽象出整个世界,但是我不能抽象你。 想让你成为私有常量,这样外部函数就无法访问你。 又想让你成为全局常量,这样在我的整个生命周期都可以调用你。 可惜世上没有这样的常量,我也无法定义你,因为你在我心中是那么的具体。

哈喽大家好,本专栏为【项目实战】专栏,有别于【底层库】专栏,我们可以发现增加 了『问题描述』、『项目展示』章节,十分符合项目开发流程,让读者更加清楚项目解决的问题、以及产品能够达到的效果。本专栏收纳项目开发过程的解决方案,是我项目开发相对成熟、可靠方法的提炼,我将这些问题的解决思路梳理,撰写本文分享给大家,大家遇到类似问题,可按本文方案处理。

本专栏会持续更新,不断完善,专栏文章关联性较弱(文章之间依赖性较弱,没有阅读顺序)。大家有任何问题,可以私信我。如果您对本专栏感兴趣,欢迎关注吧,我将带你用最简洁的代码,实现复杂的功能。

·提示:本专栏为项目实战篇,未接触项目开发的同学可能理解困难,不推荐阅读。
3A0N000001


一、问题描述

我们在做 仓储管理出入库统计报表时,使用GridControl展示数据的同时,往往需要选择数据,进行一些操作。这时我们就需要增加一列选择
本文主要介绍选择列的增加方式。

二、解决方案

2.1 方法一:采用数据源绑定方式

数据源(DataTable、List)增加“选择”列字段,绑定GridControlDataSource()属性,自动显示出来,然后在添加复选框。

2.2 方法二:采用控件自带模式方式

GridControl控件,设置MultiSelectModeCheckBoxRowSelect,自动出现选择列,支持鼠标单击、拖拉多选。

三、软件开发(源码)

3.1 方法一:采用数据源绑定方式

3.1.1 定义DataTable

   //物料查询表
   DataTable Dt_MaterialSearch;
   Dt_MaterialSearch = new DataTable();
   Dt_MaterialSearch.Columns.Add("选择", typeof(System.String));
   Dt_MaterialSearch.Columns.Add("公司编号", typeof(System.String));
   Dt_MaterialSearch.Columns.Add("采购订单编号", typeof(System.String));
   Dt_MaterialSearch.Columns.Add("供应商编号", typeof(System.String));
   Dt_MaterialSearch.Columns.Add("存货编码", typeof(System.String));
   Dt_MaterialSearch.Columns.Add("编号", typeof(System.String));
   Dt_MaterialSearch.Columns.Add("状态描述", typeof(System.String));
   Dt_MaterialSearch.Columns.Add("规格", typeof(System.String));
   Dt_MaterialSearch.Columns.Add("直径", typeof(System.Decimal));
   Dt_MaterialSearch.Columns.Add("重量", typeof(System.Decimal));
   Dt_MaterialSearch.Columns.Add("打标时间", typeof(System.DateTime));
   Dt_MaterialSearch.Columns.Add("打标备注", typeof(System.String));

3.1.2 添加列

在这里插入图片描述

3.1.3 设置选择列的值

定义成了string类型,DataTable为“T”,勾选;为“F”,不勾选。
在这里插入图片描述

3.1.4 全选 方法实现

  //函数内容:菜单,全选
  //函数版本: 0.0.0.1
  //修改时间: 2023.03.03
  //============================================================================================
  //注意事项
  //  1.  
  //  2.  
  //============================================================================================
  private void Mi_SelectAll_Click(object sender, EventArgs e)
  {
    
    
      for (int i = 0; i < Dt_MaterialSearch.Rows.Count; i++)
      {
    
    
          Dt_MaterialSearch.Rows[i]["选择"] = "T";
      }
      Dt_MaterialSearch.AcceptChanges();
      GridView_Material.CloseEditor();
      GridView_Material.PostEditor();
  }

3.1.5 取消全选 方法实现

  //函数内容:菜单,取消全选
  //函数版本: 0.0.0.1
  //修改时间: 2023.03.03
  //============================================================================================
  //注意事项
  //  1.  
  //  2.  
  //============================================================================================
  private void Mi_SelectUnAll_Click(object sender, EventArgs e)
  {
    
    
      for (int i = 0; i < Dt_MaterialSearch.Rows.Count; i++)
      {
    
    
          Dt_MaterialSearch.Rows[i]["选择"] = "F";
      }
      Dt_MaterialSearch.AcceptChanges();
      GridView_Material.PostEditor();
  }

3.2 方法二:采用控件自带模式方式

3.2.1 GridControl设置属性(源码)

窗体加载事件,添加如下代码:

    GridView_Material.OptionsBehavior.ReadOnly = true;
    GridView_Material.OptionsView.ShowGroupPanel = true;
    GridView_Material.OptionsSelection.MultiSelect = true;
    GridView_Material.OptionsSelection.MultiSelectMode = GridMultiSelectMode.CheckBoxRowSelect;
    GridView_Material.OptionsSelection.ShowCheckBoxSelectorInGroupRow = DefaultBoolean.True;
    GridView_Material.OptionsSelection.ShowCheckBoxSelectorInColumnHeader = DefaultBoolean.False;
    GridView_Material.OptionsSelection.UseIndicatorForSelection = true;
    GridControl_Material.AllowRestoreSelectionAndFocusedRow = DefaultBoolean.True;

3.2.2 GridControl设置属性(设计)

也可以采用设计工具,与3.2.1节效果一样,配置:
在这里插入图片描述

3.2.3 全选 方法实现

   //函数内容:菜单,全选
   //函数版本: 0.0.0.1
   //修改时间: 2023.03.03
   //============================================================================================
   //注意事项
   //  1.  
   //  2.  
   //============================================================================================
   private void Mi_SelectAll_Click(object sender, EventArgs e)
   {
    
    
       GridView_Material.SelectAll();
   }

3.2.4 取消全选 方法实现

   //函数内容:菜单,取消全选
   //函数版本: 0.0.0.1
   //修改时间: 2023.03.03
   //============================================================================================
   //注意事项
   //  1.  
   //  2.  
   //============================================================================================
   private void Mi_SelectUnAll_Click(object sender, EventArgs e)
   {
    
    
       GridView_Material.ClearSelection();
   }

四、项目展示

4.1 方法一:采用数据源绑定方式

在这里插入图片描述
在这里插入图片描述
应该是底层的问题,非GridView未PostEditor(),如下代码,我均已试过。

   GridView_Material.CloseEditor();
   Dt_MaterialSearch.AcceptChanges();
   GridView_Material.PostEditor();

在这里插入图片描述

4.2 方法二:采用控件自带模式方式

在这里插入图片描述
在这里插入图片描述

在这里插入图片描述

五、资源链接

建议采用方法二,方法一存在小小问题。

猜你喜欢

转载自blog.csdn.net/youcheng_ge/article/details/130763713