GRIDVIEW多行多列合并单元格(合并列)
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多行多列合并单元格(合并列)的更多相关文章
- 复杂的POI导出Excel表格(多行表头、合并单元格)
poi导出excel有两种方式: 第一种:从无到有的创建整个excel,通过HSSFWorkbook,HSSFSheet HSSFCell, 等对象一步一步的创建出工作簿,sheet,和单元格,并添加 ...
- 【转】C# DataTable 导出 Excel 进阶 多行表头、合并单元格、中文文件名乱码
本文原创地址:http://blog.csdn.net/ranbolwb/article/details/8083983 ,转载请保留本行. 本例子是上一篇 DataTable 导出 Excel 的进 ...
- easyui datagrid动态设置行、列、单元格不允许编辑
Easyui datagrid 行编辑.列编辑.单元格编辑设置 功能: 动态对datagrid 进行行.列.单元格编辑进行设置不允许编辑. 禁用行编辑: 在编辑方法调用前,对选择的行进行判断,如果不允 ...
- ABAP ALV 颜色设置(行,列,单元格)
BCALV_EDIT_03 http://blog.sina.com.cn/s/blog_a87b19300102who3.html 关于ALV表格颜色,这种需求在项目中会经常用到. 列颜色 列的颜色 ...
- ALV 颜色设置(行,列,单元格)
[转自:https://www.cnblogs.com/mingdashu/p/color_alv.html] BCALV_EDIT_03 http://blog.sina.com.cn/s/blog ...
- pandas玩转excel-> (1)如何利用pandas创建【行,列,单元格】
import pandas as pd #------新建单元格的方法一:通过先创建字典的形式 #可以先新建一个字典d={'x':100,'y':200,'z':300} #打印字典的索引print( ...
- 使用POI创建word表格合并单元格兼容wps
poi创建word表格合并单元格代码如下: /** * @Description: 跨列合并 */ public void mergeCellsHorizontal(XWPFTable table, ...
- poi读取合并单元格
poi读取合并单元格 学习了:http://blog.csdn.net/ycb1689/article/details/9764191 进行了列合并单元格的修正:原来是我自己找错了地方: import ...
- [C#]合并单元格(行、列)
详细链接:https://shop499704308.taobao.com/?spm=a1z38n.10677092.card.11.594c1debsAGeak説明:控件ID指的是页面上面的Grid ...
随机推荐
- ue4 SNew补遗
上一篇分析了SNew背后的实现,但是有一个关键问题遗漏了,那就是: #define SNew( WidgetType, ... ) \ MakeTDecl<WidgetType>( #Wi ...
- 20145318赵一Java课程总结
20145318赵一Java课程总结 每周读书笔记链接汇总 问卷调查 第1周读书笔记 第2周读书笔记 第3周读书笔记 第4周读书笔记 第5周读书笔记 第6周读书笔记 第7周读书笔记 第8周读书笔记 第 ...
- ubuntu下配置lamp环境
安装MySQL sudo apt-get install mysql-server mysql-client 安装php模块 Sudo apt-get install php5 安装Apache2 S ...
- Java截图笔记
- java环境配置总结
最近接触java,在环境配置上费了不少劲.总结一下: 1.首先安装jdk和Eclipse,jdk我安装的是1.6,Eclipse可以从官网下载:http://download.eclipse.org/ ...
- RMQ_ST算法
RMQ (Range Minimum/Maximum Query)算法 1. 概述 RMQ(Range Minimum/Maximum Query),即区间最值查询,是指这样一个问题:对于长度为n的数 ...
- 技术文档--volley 框架
Volley 框架 参考文档:http://cache.baiducontent.com/c?m=9f65cb4a8c8507ed4fece763105392230e54f73e7e808c027fa ...
- (原创)基于FPGA的调光流水灯(Verilog,CPLD/FPGA)
1.Abstract 前几天做了一个呼吸灯,觉得确实挺有意思的:可惜的是只有一个灯管亮,板子上有四个灯,要是能让这些灯有序地亮起来,那应该更有趣味了!跟传统的一样,逻辑上做成一个流水灯的样式, ...
- 《Automatic Face Classification of Cushing’s Syndrome in Women – A Novel Screening Approach》学习笔记
<针对女性库欣综合征患者的自动面部分类-一种新颖的筛查方法> Abstract 目的:库兴氏综合征对身体造成相当大的伤害如果不及时治疗,还经常是诊断的时间太长.在这项研究中,我们旨在测试面 ...
- spring MVC注解深入研究
@Controller @Service @Controller和 @Component注册一个action 到spring 上下文中,bean 的ID 默认为类名称开头字母小写.@Reposito ...