在我之前的文章《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分页控件支持表头全选操作实现之最优方法相关推荐

  1. Winform分页控件之纯分页显示处理

    在之前介绍的Winform分页控件中,都以分页控件+显示表格控件作为一个整体性的控件,不可分开,这样做的目的是可以实现更多的操作,集成更多丰富的特性,减少我们开发的工作量,这种情况虽然适用于大多数的情 ...

  2. 猛犸Winform分页控件

    本Winform分页控件不于具体的数据源相关联,可随时设置每页显示记录行数和页码,简单实用,如下图 下载地址:http://download.csdn.net/detail/shunlu/808974 ...

  3. winform 分页控件分享(二)

    大数量分页,使用存储过程. 这个存储过程是网络上考的,呵呵.我把它给贴出来,希望原作者别砸我砖头..... ALTER    PROCEDURE SP_Pagination /**//* ****** ...

  4. 【开源】QuickPager ASP.NET2.0分页控件V2.0.0.3 【增加了使用说明】

    ================================ 欢迎转载,但是请注明出处.本文出自博客园 .谢谢合作! ================================ 最新版本:V ...

  5. 日积月累系列之分页控件(js源码)

    最近开发了一款分页控件,分享给大家. 主要功能和界面介绍 cform分页控件支持服务端分页.客户端分页.数据过滤.数据排序等功能. 源码介绍 cform-pager分页控件主要由三部分组成:css.s ...

  6. c winform 打印 html,C# Winform 打印控件PrintDocument

    由于本着节约的原则,这里的打印都只是保存为.oxps格式的文件. 在我调试时每次打印完成后,窗体都会自己闪退. 在网上并没有相关资料,经过加入断点确认问题在 private void btnPrint ...

  7. 分页控件 实战 Post篇

    2019独角兽企业重金招聘Python工程师标准>>> 前言: 分页,大伙并不陌生 也许你正用着:DataGrid/GridView自带的分页 也许你正用着:网上流传较广的Aspne ...

  8. KingPager,自己做的分页控件,纯JS,支持所有语言

    效果图如下: 简介: 1.JQuery分页控件,纯JS,支持任何语言 2.全部样式可通过CSS自定义(默认的就很好看) 3.非常灵活,1行代码即可实现分页 调用示例: <html xmlns=& ...

  9. 【开源】QuickPager ASP.NET2.0分页控件V2.0.0.1——支持多种数据库。让分页更加简单。...

    分页控件的源代码下载网址:http://www.cnblogs.com/jyk/archive/2008/04/25/1170979.html (在网页的下面) 下载文件里面由一个测试网页:http: ...

  10. winform自定义分页控件

    1.控件代码: public partial class PagerControl : UserControl {#region 构造函数public PagerControl() {Initiali ...

最新文章

  1. const修饰的指针常量和常量指针
  2. STM32的RTC简单操作
  3. JavaWeb黑马旅游网-学习笔记08【旅游线路详情】
  4. 机器学习-分类算法-K-近邻算法06
  5. js如何获取计算机当前时间,js获取当前系统时间
  6. 用PyTorch创建一个图像分类器?So easy!(Part 2)
  7. ipv6的127位掩码如何表示_网络工程师(5):IP如何编址
  8. 专为前端开发者准备的 15 款优秀的 Sublime Text 插件
  9. Windows添加系统桌面常用图标
  10. python自动化框架搭建过程我们同在_python webdriver 从无到有搭建混合驱动自动化测试框架的过程和总结...
  11. c1语言水平要多久,「西班牙留学」零基础到西班牙读语言,多久能到C1?
  12. [知了堂学习笔记]_牵线Eclipse和Tomcat第一篇 —— 配置Java环境变量安装eclipse
  13. 独家!10省份“12个5G+智慧公交”案例汇总!
  14. 以太网实习_实习 | 2018年春季实习面试问题整理
  15. B. Sheldon and Ice Pieces
  16. python k线图和指标_量化交易中,如何使用Python画K线、成交量、买卖点【邢不行】...
  17. Java操作linux脚本
  18. RTSP SDP RTP/RTCP介绍
  19. Opencv之图像边缘检测:1.Sobel算子(cv2.Sobel)
  20. creo学习笔记:creo工程图转cad比例问题

热门文章

  1. jquery捕捉ctrl+enter(回车)事件
  2. C盘空间太小,建议删除如下文件以释放空间!
  3. 题解报告:hdu 1575 Tr A
  4. 32.从1到n整数中1出现的次数
  5. ASP.NET中Form验证登录后反复跳转回登录页面的问题
  6. 收藏!本、硕、博、程序员必备神器
  7. 10月| R社区原创作者免费赠书
  8. Egret入门学习日记 --- 第十五篇(书中 6.1~6.9节 内容)
  9. k8s控制平面 scheduler部署
  10. 「版本升级」MyEclipse CI 2018.12.0正式发布