相关文章推荐
安静的麻辣香锅  ·  高雄市立圖書館全球資訊網-讀者服務-閱覽服務 ...·  3 月前    · 
千杯不醉的树叶  ·  ISEF国际科学与工程大赛-报名-奖项-项目介绍·  5 月前    · 
踢足球的草稿本  ·  【分享】火焰之纹章圣战系谱改版补丁|【 ...·  5 月前    · 
乖乖的灯泡  ·  2024 MWC 上海华为展区隐私声明·  6 月前    · 
个性的饼干  ·  北京语言大学 ...·  11 月前    · 
Code  ›  GridView利用CheckBox复选框列实现单选功能开发者社区
复选框 gridview checkbox选中事件
https://cloud.tencent.com/developer/article/2080296
腹黑的豆浆
2 年前
作者头像
全栈程序员站长
0 篇文章

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

前往专栏
腾讯云
开发者社区
文档 意见反馈 控制台
首页
学习
活动
专区
工具
TVP
文章/答案/技术大牛
发布
首页
学习
活动
专区
工具
TVP
返回腾讯云官网
社区首页 > 专栏 > 全栈程序员必看 > GridView利用CheckBox复选框列实现单选功能

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

作者头像
全栈程序员站长
发布 于 2022-08-23 19:27:28
636 0
发布 于 2022-08-23 19:27:28
举报

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

自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");
 
推荐文章
安静的麻辣香锅  ·  高雄市立圖書館全球資訊網-讀者服務-閱覽服務-台灣資料專區服務
3 月前
千杯不醉的树叶  ·  ISEF国际科学与工程大赛-报名-奖项-项目介绍
5 月前
踢足球的草稿本  ·  【分享】火焰之纹章圣战系谱改版补丁|【 模拟器周边区 | Emulators Periphery 】 - 【 浮游城 - Castle in the Sky | 开放邀请注册,PS|SS|WII|DC
5 月前
乖乖的灯泡  ·  2024 MWC 上海华为展区隐私声明
6 月前
个性的饼干  ·  北京语言大学 拟新增学位授权学科或专业学位授权点的申报及论证材料 2014年语言病理学自主设置目录外二级学科论证方案
11 月前
今天看啥   ·   Py中国   ·   codingpro   ·   小百科   ·   link之家   ·   卧龙AI搜索
删除内容请联系邮箱 2879853325@qq.com
Code - 代码工具平台
© 2024 ~ 沪ICP备11025650号