GridView利用CheckBox复选框列实现单选功能

GridView利用CheckBox复选框列实现单选功能自Dev13.2开始,GridView提供了自带的复选框列,该功能能实现多选操作,方便了不少,那如果想把这个自带的复选框列做成单选,那就需要单独处理了。先补充一下,GridView的复选框列怎么设置,如下代码片段,只要设置前面两个属性即可在GridView看到有一列复选框(BandedGridView较老版本不支持这个功能,应该得在19.2或者20之后的版本才支持,具体可以看看自己的版本,如果设置无效,那么说明不支持)://设置显示复选框列gridview.Option

大家好,又见面了,我是你们的朋友全栈君。

自Dev13.2开始,GridView提供了自带的复选框列,该功能能实现多选操作,方便了不少,那如果想把这个自带的复选框列做成单选,那就需要单独处理了。

先补充一下,GridView的复选框列怎么设置,如下代码片段,只要设置前面两个属性即可在GridView看到有一列复选框(BandedGridView较老版本不支持这个功能,应该得在19.2或者20之后的版本才支持,具体可以看看自己的版本,如果设置无效,那么说明不支持):

 //设置显示复选框列
            gridview.OptionsSelection.MultiSelectMode = DevExpress.XtraGrid.Views.Grid.GridMultiSelectMode.CheckBoxRowSelect;
            gridview.OptionsSelection.MultiSelect = true;
            gridview.OptionsSelection.CheckBoxSelectorColumnWidth = 45;//设置复选框列的宽度

了解如何显示复选框列,那么想实现单选的功能就需要检测选择操作时候对其他行的CheckBox进行取消选择,GridView提供了一个SelectionChanged事件,我们只需要在这个事件监听这个操作,每次触发的时候清除所有选择行(gridView.ClearSelection())然后再选择当前行即可,直接上代码:

/// <summary>
        /// 设置GridView单选
        /// </summary>
        /// <param name="view"></param>
        /// <param name="selectCaption"></param>
        public static void SetGridViewSingleSelect(DevExpress.XtraGrid.Views.Grid.GridView view,string selectCaption="选择")
        {
            if (view == null) return;
            //设置显示复选框列
            view.OptionsSelection.MultiSelectMode = DevExpress.XtraGrid.Views.Grid.GridMultiSelectMode.CheckBoxRowSelect;
            view.OptionsSelection.MultiSelect = true;
            view.OptionsSelection.CheckBoxSelectorColumnWidth = 45;
            view.OptionsSelection.ShowCheckBoxSelectorInColumnHeader = DevExpress.Utils.DefaultBoolean.False;//列标题不显示CheckBox,控制不能全选
            //
            var selectCol=view.VisibleColumns[0];
            if(selectCol.FieldName== "DX$CheckboxSelectorColumn")
            {
                selectCol.Caption = selectCaption;
            }
            view.SelectionChanged += onSelectChanged;
            void onSelectChanged(object sender , DevExpress.Data.SelectionChangedEventArgs e)
            {
                //注销事件,防止以下操作反复触发该事件
                view.SelectionChanged -= onSelectChanged;
                //清除所有选择
                view.ClearSelection();
                if (e.Action == CollectionChangeAction.Add)//选中
                {
                    view.SelectRow(e.ControllerRow);
                }
                else if (e.Action == CollectionChangeAction.Remove)//取消选中
                {
                    view.UnselectRow(e.ControllerRow);
                }
                view.SelectionChanged += onSelectChanged;
            }
        }

如果需求是不可以允许不选的话,不需要代码中的两个条件语句,直接view.ClearSelection()后调用view.SelectRow(e.ControllerRow)即可。

示例、代码如下:

public Form1()
        {
            InitializeComponent();
            SetGridViewSingleSelect(gridView1);
            gridControl1.DataSource = CreateDt();
        }
        DataTable CreateDt()
        {
            var dt = new DataTable();
            dt.Columns.Add("id");
            dt.Columns.Add("name");
            for (int i = 0; i < 20; i++)
            {
                dt.Rows.Add(i, "name" + i);
            }
            return dt;
        }

结果演示:

GridView利用CheckBox复选框列实现单选功能

 

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/139340.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • java 构造函数的作用_Java中构造函数的作用(转)

    java 构造函数的作用_Java中构造函数的作用(转)https://blog.csdn.net/vipmao/article/details/51530954,我觉得讲的非常好,学习到了构造函数的最大作用就是创建对象时完成初始化,当我们在new一个对象并传入参数的时候,会自动调用构造函数并完成参数的初始化。如下:publicclassTest{privateStringname;//有参数的构造函数publicTest(Stringn…

    2025年9月2日
    9
  • Esp8266进阶之路⑨ 【小实战上篇】Windows系统搭建8266的本地Mqtt服务器,局域网点亮一盏LED灯。(带Demo)「建议收藏」

    Esp8266进阶之路⑨ 【小实战上篇】Windows系统搭建8266的本地Mqtt服务器,局域网点亮一盏LED灯。(带Demo)「建议收藏」本系列博客学习由非官方人员半颗心脏潜心所力所写,仅仅做个人技术交流分享,不做任何商业用途。如有不对之处,请留言,本人及时更改。1、Esp8266之搭建开发环境,开始一个“hellowworld”串口打印。2、Esp8266之利用GPIO开始使用按钮点亮你的“第一盏灯”。3、Esp8266之利用“软件定时器”定时0.5秒闪烁点亮一盏LED。4、Esp8266之了解P

    2022年5月28日
    34
  • visio2013首要事项闪退_visio一保存就闪退

    visio2013首要事项闪退_visio一保存就闪退问题描述visio2013安装完成后,新建流程图或者打开流程图,程序就会自动关闭,为了找到错误,我们打开“控制面板->事件查看器->windows事件日志”可以看到一个错误日志,错误如下:错误应用程序名称:VISIO.EXE,版本:15.0.4420.1017,时间戳:0x506742a9错误模块名称:VISLIB.dll,版本:15.0.4420.1017,时间戳:0x506741bc异常代码:0xc0000005错误偏移量:0x000000000010a887错

    2025年11月10日
    3
  • 移位寄存器-Verilog

    移位寄存器-Verilog//五位循环右移moduleregister_right( inputclk, input [4:0]data_in, outputreg[4:0]data_out); always@(posedgeclk)begin data_out<=({data_in[0],data_in[4:1]});endendmodule

    2022年7月16日
    13
  • <input type=file>文件上传

    <input type=file>文件上传<input>type类型为file时使得用户可以选择一个或多个元素以提交表单的方式上传到服务器上,或者通过 JavaScript 的FileAPI对文件

    2022年7月4日
    31
  • NABC模型进行需求分析

    NABC模型进行需求分析

    2021年9月7日
    48

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号