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多行多列合并单元格(合并列)相关推荐
- Python让Excel飞起来—批量处理行、列和单元格
目录 案例01 精确调整多个工作簿的行高和列宽 举一反三 精确调整一个工作簿中所有工作表的行高和列宽 案例02 批量更改多个工作簿的数据格式 举一反三 批量更改多个工作簿的外观格式 案例03 批量替换 ...
- csstable跨列居中_html中table表格如何跨行或跨列合并单元格
在html中的table表格实现跨行或跨列合并单元格,需要用到以下两个属性: 1.跨列colspan属性:就是合并左右关系的单元格: 2.跨行rowspan属性:就是合并上下关系的单元格: 而在tab ...
- SpringBoot+Poi-tl根据Word模板动态生成word(含动态行表格、合并单元格)
本编文章继SpringBoot+Poi-tl根据Word模板动态生成word(含动态行表格)文章之后 介绍Poi-tl导出word的延伸功能: 所需依赖以及word模板所属位置 见 SpringBoo ...
- 复杂的POI导出Excel表格(多行表头、合并单元格)
poi导出excel有两种方式: 第一种:从无到有的创建整个excel,通过HSSFWorkbook,HSSFSheet HSSFCell, 等对象一步一步的创建出工作簿,sheet,和单元格,并添加 ...
- 选择邻近区域时: 代码操作与实际EXCEL键盘操作的区别 Currentregion与CTRL+A的区别, 又存在于,比如第一行有数据(合并单元格), 第二行为空, 第三行往下有数据, 第一行选中其中
选择邻近区域时: 代码操作与实际EXCEL键盘操作的区别 Currentregion与CTRL+A的区别, 又存在于,比如第一行有数据(合并单元格), 第二行为空, 第三行往下有数据, 第一行选中其中 ...
- 使用Python批量处理行、列和单元格
使用Python批量处理行.列和单元格 精确调整工作表的行高和列宽 批量更改多个工作簿的数据格式 批量更改工作簿的外观格式 设置字体格式 修改字体为宋体 修改字号 字体加粗 字体颜色 单元格填充颜色 ...
- asp.net gridview删除 获取到第一行第一列的单元格内容_VBA中的常用单元格引用方式...
VBA编程经常和"对象"打交道,其中最频繁的对象大概就是"单元格"了.(听说您还没有对象?那--我想你大概需要一份Excel,包邮988--) 今天我们就来聊一 ...
- layui合并表格的单元格 合并列或行的两种方法
注意:两种方法要求layui表格的单元格中没有使用fixed属性,不然代码不会起效 方法一: /** * 合并单元格(列) * @param res 表格数据 * @param curr 当前页 * ...
- PHP excel导出(自定义样式,行高,合并单元格等)
PHP 导出多个sheet 或者导出带样式的excel 修改样式方式见下文 具体使用需要根据具体业务进行一些调整和封装 $PHPExcel = new \PHPExcel(); $sheetIndex ...
最新文章
- Make Them Equal 埃氏筛法(1200)
- 空间三维散点数据的线性拟合
- 39页作业(还款年限—月还款额表)
- 为SAP Analytics Cloud的story创建持久化页面
- rxjs的一个例子:什么是rxjs的OperatorFunction?
- String/Stringbuilder/StringBuffer
- Java里面Unreachable code
- axios post封装对象到后端_axios 使用post方式传递参数,后端接受不到
- 台达编码器型号含义_光电编码器型号含义_光电编码器应用实例
- uni-app android白屏,uniapp页面跳转出现白屏怎么办
- 数据中心运维管理经验39条
- 小米卸载动画-图标爆炸实现
- w10系统 怎么快捷搜索服务器,w10系统怎么远程连接服务器
- 3D打印是什么?如何工作的?
- 做sxy官网的一点经验
- matlab括号不对称,关于matlab的Error: Unbalanced or misused parentheses or brackets.什么意思?...
- Spring + JedisCluster操作Redis(集群)
- 拼图android系统程序,2021手机照片拼图软件
- AVR单片机-nRF24L01发送接收程序
- 如何实现VMware下Ubuntu和Windows之间的复制粘贴?
热门文章
- Spring框架jar包分类(转)
- [Leetcode]141. Linked List Cycle
- 学习进度(2016.5.1)
- 计蒜客---函数规律
- Struts2(十二)使用验证框架验证数据较验
- MSSQL游标的原理及示例
- 高级JAVA - 高并发下接口限流 Semaphore
- 如何删除pdf中计算机属性,PDF文件做好后怎么修改
- 【题解】牛客小白月赛16(部分题,待补充……)
- 远程连接:hive 报错:Permission denied: user=anonymous, access=EXECUTE