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 ...
随机推荐
- iframe空文档中写入内容
往一个空的iframe中写入内容,再其document ready之前有可能遇到拿回 的body指针为空,因此以下面的函数往其document中写入html HRESULT WriteToHtmlDo ...
- 10个经典的C语言面试基础算法及代码
10个经典的C语言面试基础算法及代码作者:码农网 – 小峰 原文地址:http://www.codeceo.com/article/10-c-interview-algorithm.html 算法是一 ...
- 不可变String
1,什么是不可变String? String对象是不可变的.当试图修改String值的时候,实际上都是创建一个全新的String对象,该对象包含修改后字符串的值,而最初的对象则没有发生改变. pack ...
- (转)MVC中的Repository模式
1.首先创建一个空的MVC3应用程序,命名为MyRepository.Web,解决方案命名为MyRepository. 2.添加一个类库项目,命名为MyRepository.DAL,添加一个文件夹命名 ...
- iOS开发零基础--Swift篇:Swift中数据类型
Swift类型的介绍 Swift中的数据类型也有:整型/浮点型/对象类型/结构体类型等等 先了解整型和浮点型 整型 有符号 Int8 : 有符号8位整型 Int16 : 有符号16位整型 Int32 ...
- git clone 错误ca-certificates.crt
git clone https://github.com/baoyiluo/selfblog.git Cloning into 'selfblog'... error: server certific ...
- Rsync 3.1.0 发布,文件同步工具
文件同步工具Rsync 3.1.0发布.2013-09-29 上一个版本还是2011-09-23的3.0.9 过了2年多.Rsync基本是Linux上文件同步的标准了,也可以和inotify配合做实时 ...
- 用c#开发微信 (8) 微渠道 - 推广渠道管理系统 3 UI设计及后台处理
我们可以使用微信的“生成带参数二维码接口”和 “用户管理接口”,来实现生成能标识不同推广渠道的二维码,记录分配给不同推广渠道二维码被扫描的信息.这样就可以统计和分析不同推广渠道的推广效果. 前面二篇& ...
- JS模块间错误隔离
问题背景: 页面中有多个功能模块,怎么在一个模块出了问题之后,保证其它模块的正常工作. 上面的差不多就是面试官的原话了,姑且称之为模块间错误隔离问题 第一反应是动态按需加载代码,用户操作发生后再加载对 ...
- 用word-break: break-all解决不正确换行问题
这个在新闻频道存在已久的问题,今天终于把它给解决了! 问题是这样的,当一段文字中有比较长的链接地址,会造成链接地址之前的文字不能正确换行,效果如下: 对应的html代码如下: <p> 如图 ...