asp.net中GridView合并单元格示例

合并单元格适合GridView,合并相同的行,合并相同列还不支持,研究中。。。

1        合并多列#region 合并多列
2        /**//// <summary>
3        /// GridView合并
4        /// </summary>
5        /// <param name="gdv">GridView</param>
6        /// <param name="startColumnIndex">起始列Index</param>
7        /// <param name="endColumnIndex">结束列Index</param>
8        public static void MergeGridViewRows(GridView gdv, int startColumnIndex, int endColumnIndex)
9        {
10            if (gdv == null || endColumnIndex < startColumnIndex || gdv.Rows.Count < 2)
11                return;
12            if (startColumnIndex < 0 || endColumnIndex > gdv.Columns.Count - 1)
13                throw new ArgumentOutOfRangeException("列Index超出GridView可用列的范围。");
14             EndColumnIndex = endColumnIndex;
15             MergeCellWithSubColumn(gdv, 0, 0, gdv.Rows.Count - 1);
16         }
17        private static int EndColumnIndex = 0;
18
19        /**//// <summary>
20        /// 合并当前列和后续列
21        /// </summary>
22        /// <param name="currentColumnIndex">当前列</param>
23        /// <param name="startRowIndex">起始行</param>
24        /// <param name="endRowIndex">结束行</param>
25        /// <summary>
26        private static void MergeCellWithSubColumn(GridView gdv, int currentColumnIndex, int startRowIndex, int endRowIndex)
27        {
28            if (currentColumnIndex > EndColumnIndex)//结束递归
29                return;
30            string preValue = GetCellValue(gdv,startRowIndex, currentColumnIndex);
31            string curValue = string.Empty;
32            int endIndex = startRowIndex;
33            for (int i = startRowIndex + 1; i <= endRowIndex + 1; i++)
34            {
35                if (i == endRowIndex + 1)
36                     curValue = null;//完成最后一次合并
37                else
38                     curValue = GetCellValue(gdv, i, currentColumnIndex);
39                if (curValue != preValue)
40                {
41                    //合并当前列
42                     MergeColumnCell(gdv, currentColumnIndex, endIndex, i - 1);
43                    //合并后续列
44                     MergeCellWithSubColumn(gdv, currentColumnIndex + 1, endIndex, i - 1);
45                     endIndex = i;
46                     preValue = curValue;
47                 }
48             }
49         }

http://hi.baidu.com/jonesvale/blog/item/5b2b282c2e91323d359bf75c.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值