Winform分页控件支持表头全选操作实现之最优方法

简介:

在我之前的文章《Winform分页控件支持表头全选操作实现》中,有介绍过一种方法来实现DataGridView的表头全选操作,不过这种方式,是通过绑定字段的方式实现,每次需要创建一个字段来专门做这个列头绑定,显得有点多余。那有没有更好的方式呢,当然有,我这里介绍一种更好表头全选实现的方式,然后说明我的分页控件封装后是如何简单实现这种效果的。

1)传统的DataGridView全选实现效果。

抛开我的分页控件来讲,实现传统的DataGridView的表头全选的方式,只需要引入一个类DatagridViewCheckBoxHeaderCell,它继承自DataGridViewColumnHeaderCell,我们来看具体的使用代码:

public FrmNormalGridViewSelect2()
        {
            InitializeComponent();

            if (!this.DesignMode)
            {
                DataGridViewCheckBoxColumn colCB = new DataGridViewCheckBoxColumn();
                DatagridViewCheckBoxHeaderCell cbHeader = new DatagridViewCheckBoxHeaderCell();
                colCB.HeaderCell = cbHeader;
                this.dgvSelectAll.Columns.Add(colCB);

                cbHeader.OnCheckBoxClicked += new CheckBoxClickedHandler(cbHeader_OnCheckBoxClicked);
            }
        }

        void cbHeader_OnCheckBoxClicked(bool state)
        {
            foreach (DataGridViewRow Row in dgvSelectAll.Rows)
            {
                Row.Cells[0].Value = state;
                Row.Selected = state;
            }
            this.dgvSelectAll.RefreshEdit();
        }

这样额外的代码操作即可实现表头全选的操作了,实现效果如下所示

2)基于DevExpress的GridControl控件的全选实现。

做戏做全套,我们在开发中,也经常使用到基于DevExpress的系统界面开发,那么,不用创建字段的方式,在GridControl中有无好的实现方法呢。当然有,下面我来介绍一下。

首先引入一个GridCheckMarksSelection类,这个类就是用来实现这种全选效果的,我们看看其使用的代码。

        public FrmDevGridViwSelect2()
        {
            InitializeComponent();

            this.gridView1.OptionsBehavior.Editable = true;
            this.gridView1.OptionsBehavior.ReadOnly = false;
            this.gridControl1.DataSourceChanged += new EventHandler(gridControl1_DataSourceChanged);
        }

        void gridControl1_DataSourceChanged(object sender, EventArgs e)
        {
            GridCheckMarksSelection selection = new GridCheckMarksSelection(gridView1);
            selection.CheckMarkColumn.VisibleIndex = 0;
            selection.CheckMarkColumn.Width = 60;
        }

是不是很简单呢,它最终实现的效果会如下所示。

 

3)基于我的分页控件的全选操作

有这么好的实现效果,我当然会把它集成到我的分页控件里面了,当然,为了追求简单就是美的方式,我会尽量简化客户的使用代码。我们只需要设置一个属性即可实现表头全选的操作了(DevExpress版本和传统版本代码一样)。

this.winGridViewPager1.ShowCheckBox = true;

我们来看看基于我的分页控件实现的表头全选功能,界面效果如何。

1)传统界面的效果

 

2)DotNetBar界面效果

 

3)DevExpress界面效果 

 

这样的简单调用就能实现表头全选的操作,不需要另外其他额外的操作,是不是很好,简洁呢?这其实就是我追求的表头全选的最优方法了。

最后,可能读者还有一个疑问,就是我全选或者部分选择,我要知道我选择的是那些行,该怎么操作呢?放心,我这个分页控件也已经为你考虑了,呵呵。

通过调用下面的代码即实现。

        private void btnGetCheckedRows_Click(object sender, EventArgs e)
        {
            List<int> list = this.winGridViewPager1.GetCheckedRows();
            StringBuilder sb = new StringBuilder();
            int i = 1;
            foreach (int rowindex in list)
            {
                sb.Append(rowindex.ToString() + ",");
                if (i++ % 10 == 0)
                {
                    sb.Append("\r\n");
                }
            }
            MessageUtil.ShowTips(sb.ToString());
        }

演示例子下载:

分页控件传统界面例子  分页控件DevExpress样式例子

本文转自博客园伍华聪的博客,原文链接:Winform分页控件支持表头全选操作实现之最优方法,如需转载请自行联系原博主。



目录
相关文章
|
3月前
|
开发框架 前端开发 JavaScript
在DevExpress的GridView的列中,动态创建列的时候,绑定不同的编辑处理控件
在DevExpress的GridView的列中,动态创建列的时候,绑定不同的编辑处理控件
|
3月前
|
开发框架 前端开发 JavaScript
在WPF应用中实现DataGrid的分组显示,以及嵌套明细展示效果
在WPF应用中实现DataGrid的分组显示,以及嵌套明细展示效果
在WPF应用中实现DataGrid的分组显示,以及嵌套明细展示效果
|
3月前
|
存储 开发框架 前端开发
在Winform分页控件中集成保存用户列表显示字段及宽度调整设置
在Winform分页控件中集成保存用户列表显示字段及宽度调整设置
|
3月前
|
开发框架 缓存 前端开发
使用扩展函数方式,在Winform界面中快捷的绑定树形列表TreeList控件和TreeListLookUpEdit控件
使用扩展函数方式,在Winform界面中快捷的绑定树形列表TreeList控件和TreeListLookUpEdit控件
|
4月前
Element UI 多选表格【翻页多选】简易版(不支持翻页多选数据反显)
Element UI 多选表格【翻页多选】简易版(不支持翻页多选数据反显)
105 0
Element UI 多选表格【翻页多选】简易版(不支持翻页多选数据反显)
|
4月前
Element UI 多选表格【翻页多选】全能版(含翻页多选数据反显、toggleRowSelection失效的原因解析和解决方案)
Element UI 多选表格【翻页多选】全能版(含翻页多选数据反显、toggleRowSelection失效的原因解析和解决方案)
303 0
在TableViewer中如何给表格的单元格增加其他组件的编辑功能
在TableViewer中如何给表格的单元格增加其他组件的编辑功能
54 0
|
设计模式 存储 前端开发
分页复选设计的坑
什么是分页复选设计呢?
|
数据库 C# 数据库管理
C#:Winfrom 实现DataGridView 自定义分页
今天给大家分享Winform实现DataGridView 自定义分页的案例,感兴趣的朋友可以一起来学习一下。 采用技术:C\#+Winform+Dapper+SQLite。
C#:Winfrom 实现DataGridView 自定义分页
|
人工智能 C#
c#中在datagridview的表格动态增加一个按钮方法
c#中在datagridview的表格动态增加一个按钮方法,如果想要这一套教程的可以移步去这里 《期末作业C#实现学生宿舍管理系统》,对了最近我们有一个人工智能交流群,如果大家对代码有问题,想交流的可以进群,私聊我就可以了! 效果图片 : 在Load事件中写入代码 那ui有了功能怎么办呢?别急我们在 dataGridView1_CellContentClick事件中添加方法 这样的话 我们就可以点击对应行的修改来获取到id的值这里有一个bug就是第三行没数据需要隐藏,现在还没有解决,欢迎大家指出!.....
665 0
c#中在datagridview的表格动态增加一个按钮方法