GitHub项目地址:https://github.com/mingceng/merge-gridviewcell

去年的时候,我写了两篇文章:  GridView多行多列合并单元格(完整代码和例子)GridView多行多列合并单元格(指定列合并)。今天继续再添加一些功能,首先看下图:

左边是原始数据的显示,右边是应用合并列之后的效果。

从图中可以看到,二级指标有两列,有的行中两列的内容一样,有的则不一样,如果实现如右图所示,看起来效果会更好一些。下面就着手实现这个功能,我的实现原理很简单,就是遍历GridView的行和遍历行中的单元格,如果单元格的前一列和当前列的内容相同就合并这两列。下面是具体实现的代码,上面有注释,应该很容易理解。

   1:          /// <summary>
   2:          /// 和并列
   3:          /// </summary>
   4:          /// <param name="gv">要合并的GridView</param>
   5:          /// <param name="startCol">开始列的索引</param>
   6:          /// <param name="endCol">结束列的索引</param>
   7:          /// <param name="containHeader">是否合并表头,默认不合并</param>
   8:          public static void MergeColumn(GridView gv, int startCol, int endCol, bool containHeader = false)
   9:          {
  10:              if (containHeader)
  11:              {
  12:                  BLRowCells(gv.HeaderRow, startCol, endCol);
  13:              }
  14:              foreach (GridViewRow row in gv.Rows)
  15:              {
  16:                  BLRowCells(row, startCol, endCol);
  17:              }
  18:          }
  19:   
  20:          /// <summary>
  21:          /// 遍历GridViewRow中的单元格
  22:          /// </summary>
  23:          /// <param name="row">要遍历的行</param>
  24:          /// <param name="start">开始索引</param>
  25:          /// <param name="end">结束索引</param>
  26:          private static void BLRowCells(GridViewRow row, int start, int end)
  27:          {
  28:              //从开始索引的下一列开始
  29:              for (int i = start + 1; i <= end; i++)
  30:              {
  31:                  //当前单元格
  32:                  TableCell currCell = row.Cells[i];
  33:                  //前一个单元格
  34:                  TableCell prevCell = row.Cells[i - 1];
  35:                  if (!string.IsNullOrEmpty(currCell.Text) && !string.IsNullOrEmpty(prevCell.Text))
  36:                  {
  37:                      if (currCell.Text == prevCell.Text)
  38:                      {
  39:                          currCell.ColumnSpan = prevCell.ColumnSpan < 1 ? 2 : prevCell.ColumnSpan + 1;
  40:                          prevCell.Visible = false;
  41:                      }
  42:                  }
  43:              }
  44:          }

本篇文章作为前两篇文章的续文,内容相对来说简单一些,不过有需要合并GridView单元格的朋友,希望这三篇文章能够起到帮助作用!

GitHub项目地址:https://github.com/mingceng/merge-gridviewcell

GRIDVIEW多行多列合并单元格(合并列)的更多相关文章

  1. 复杂的POI导出Excel表格(多行表头、合并单元格)

    poi导出excel有两种方式: 第一种:从无到有的创建整个excel,通过HSSFWorkbook,HSSFSheet HSSFCell, 等对象一步一步的创建出工作簿,sheet,和单元格,并添加 ...

  2. 【转】C# DataTable 导出 Excel 进阶 多行表头、合并单元格、中文文件名乱码

    本文原创地址:http://blog.csdn.net/ranbolwb/article/details/8083983 ,转载请保留本行. 本例子是上一篇 DataTable 导出 Excel 的进 ...

  3. easyui datagrid动态设置行、列、单元格不允许编辑

    Easyui datagrid 行编辑.列编辑.单元格编辑设置 功能: 动态对datagrid 进行行.列.单元格编辑进行设置不允许编辑. 禁用行编辑: 在编辑方法调用前,对选择的行进行判断,如果不允 ...

  4. ABAP ALV 颜色设置(行,列,单元格)

    BCALV_EDIT_03 http://blog.sina.com.cn/s/blog_a87b19300102who3.html 关于ALV表格颜色,这种需求在项目中会经常用到. 列颜色 列的颜色 ...

  5. ALV 颜色设置(行,列,单元格)

    [转自:https://www.cnblogs.com/mingdashu/p/color_alv.html] BCALV_EDIT_03 http://blog.sina.com.cn/s/blog ...

  6. pandas玩转excel-> (1)如何利用pandas创建【行,列,单元格】

    import pandas as pd #------新建单元格的方法一:通过先创建字典的形式 #可以先新建一个字典d={'x':100,'y':200,'z':300} #打印字典的索引print( ...

  7. 使用POI创建word表格合并单元格兼容wps

    poi创建word表格合并单元格代码如下: /** * @Description: 跨列合并 */ public void mergeCellsHorizontal(XWPFTable table, ...

  8. poi读取合并单元格

    poi读取合并单元格 学习了:http://blog.csdn.net/ycb1689/article/details/9764191 进行了列合并单元格的修正:原来是我自己找错了地方: import ...

  9. [C#]合并单元格(行、列)

    详细链接:https://shop499704308.taobao.com/?spm=a1z38n.10677092.card.11.594c1debsAGeak説明:控件ID指的是页面上面的Grid ...

随机推荐

  1. ansible 2.2的源码编译安装

    ansible代码下载地址:http://releases.ansible.com/ansible/ # git clone git://github.com/ansible/ansible.git ...

  2. JavaScript 高性能笔记

    浏览器解析 JavaScript .CSS .DOM 时,一般都是单线程解析,所以,引用外部文件时的位置不同,UE体验也不同. 下面是 Yahoo 大牛 Nicholas C. Zakas 的 < ...

  3. Winpcap构建用户级网桥

    Winpcap构建网桥 根据winpcap sdk中的user-level-bridge用户级网桥 |机器1                 |                  |机器2   | | ...

  4. linux-7 man 命令

    man  命令的分类 man 命令 代码 代表内容 普通命令 内核调用的函数与工具 常见的函数与函数库 设备文件的说明 配置文件 游戏 惯例与协议 管理员可使用的命令 内核相关的文件 一般来讲帮助文档 ...

  5. Zabbix_agent的安装配置

    在Linux上安装zabbix agent 安装 [root@agtest ~]# yum install http://repo.zabbix.com/zabbix/3.0/rhel/7/x86_6 ...

  6. Dynamic CRM 2013学习笔记(二十二)插件里调用WCF服务

      1. 添加service:     2.调用WCF BasicHttpBinding myBinding = new BasicHttpBinding(); myBinding.Name = &q ...

  7. requests发送HTTP请求

    requests库是一个流行的用于发送Http请求的Python第三方库, 其设计简洁高效可以完美替代默认的urllib. 使用pip安装requests: pip install requests ...

  8. [Java Web] 6、Tomcat服务器的安装及配置以及JSP技术笔记

    目录  1.Web容器简介  2.Tomcat粗介及配置粗讲  3.Tomcat服务器配置 3-1.修改端口号  3-2.配置虚拟目录 3-3.配置首页  4.JSP执行流程  5.JSP粗略了解 1 ...

  9. Linux下jvm、tomcat、mysql、log4j优化配置笔记

    小菜一直对操作系统心存畏惧,以前也很少接触,这次创业购买了Linux云主机,由于木有人帮忙,只能自己动手优化服务器了.... 小菜的云主机配置大致为:centeos6(32位),4核心cpu,4G内存 ...

  10. django上传文件

    template html(模板文件): <form enctype="multipart/form-data" method="POST" action ...