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)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • pycharm和idle语法区别_python文件无法用idle打开

    pycharm和idle语法区别_python文件无法用idle打开  最近在熟悉Python的class类的时候,无意中发现同样的代码,在pycharm和IDLE中结果不同,闲话少说先上代码:1classaa():2def__init__(self,name):3print(“mynameis%s”%name)4def__del__(self):5…

    2022年8月28日
    7
  • WebService简单案例实例

    WebService简单案例实例本周工作日即将结束,下周项目经理安排了一项任务可能需要使用到webservice,但本人之前尚未使用过,网上查了一些案例看了看在此小记一篇留作日后回首也希望可以帮助到查看者朋友1、什么是WebService?WebService是一种远程调用技术,也叫XMLWebServiceWebService,是一种可以接收从Internet或者Internet上的其他系统中传递过来的请求,轻量级的独…

    2022年7月21日
    18
  • Python递归实现全排列

    Python递归实现全排列排列:从n个元素中任取m个元素,并按照一定的顺序进行排列,称为排列;全排列:当n==m时,称为全排列;比如:集合{1,2,3}的全排列为:{123} {132}{213}{231}{321}{312}递归思想:取出数组中第一个元素放到最后,即a[1]与a[n]交换,然后递归求a[n-1]的全

    2022年6月29日
    41
  • ELK搭建开源日志系统(window版本)—图文详细

    ELK搭建开源日志系统(window版本)—图文详细ELK搭建开源日志系统(window版本)—图文详细日志对于排查错误非常重要,使用linux命令awksedgrepfind等命令查询日志非常麻烦,而且很难做数据分析,使用免费开源的ELK可以支撑大规模的日志检索,本文将一步步教怎么快速搭建一个window版本的ELK日志收集系统。下载elasticsearch、logstash、kibana、filebeat注意同一系列的版本要一样,防止出现版本不兼容问题,本文使用7.16.0版本,在window系统演示下载elasticsearch访问地

    2022年8月30日
    4
  • Xpath、Jsoup、Xsoup(我的Java爬虫之二)

    Xpath、Jsoup、Xsoup(我的Java爬虫之二)

    2021年6月5日
    144
  • Fiddler抓包9-保存会话(save)

    Fiddler抓包9-保存会话(save)

    2022年3月3日
    113

发表回复

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

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