好得很程序员自学网

<tfoot draggable='sEl'></tfoot>

GridView多行多列合并单元格(指定列合并)

GridView多行多列合并单元格(指定列合并)

上周写了一篇 GridView多行多列合并单元格(完整代码和例子) ,实现的方法有很多不足之处,比如只能合并连续的列,不支持模板列。在今天的文章里,首先来解决第一个不足。

解决这个问题的思路并不难,现有的代码已经解决了连续列的合并,合并指定的列只需将要合并的列按照顺序传递给合并的方法,就OK了!下面我给出合并指定列的代码:

    1:    /// <summary> 
    2:    /// 合并GridView单元格 
    3:    /// </summary> 
    4:    /// <param name="gv">要合并的GridView</param> 
    5:    /// <param name="cols">指定的列,要按照顺序传入</param> 
    6:    public   static   void  MergeRow(GridView gv,  params   int [] cols)
    7:   {
    8:       RowArg init =  new  RowArg()
    9:       {
   10:           StartRowIndex = 0,
   11:           EndRowIndex = gv.Rows.Count - 2
   12:       };
   13:        for  ( int  i = 0; i < cols.Length; i++)
   14:       {
   15:            if  (i > 0)
   16:           {
   17:               List<RowArg> list =  new  List<RowArg>();
   18:                //从第二列开始就要遍历前一列 
   19:               TraversesPrevCol(gv, cols[i - 1], list);
   20:                foreach  (var item  in  list)
   21:               {
   22:                   MergeRow(gv, cols[i], item.StartRowIndex, item.EndRowIndex);
   23:               }
   24:           }
   25:            //合并开始列的行 
   26:            else 
   27:           {
   28:               MergeRow(gv, i, init.StartRowIndex, init.EndRowIndex);
   29:           }
   30:       }
   31:   }

上一篇文章最后,我写了一个简单的例子,在这个例子中,如下图(左边)所示,合并了前四列,第一列是张三,第二列是张三的工资项:应发工资和五险一金,第三列分别是应发工资的子项:基本工资、奖金和加班,五险一金的子项:医疗保险和住房公积金。第四列基本工资:1月,奖金:1月,加班:1月… 正常来说,第四列都是1月的,应该都合并成一块。使用连续列合并的方法完成这个问题,可以将列的顺序进行调整,但是现在要求不能调整列的顺序,那么就只能按照指定列合并了。

完成上图中间的合并格式,只需在GridView绑定了数据之后,调用本文开始的方法,传入列的顺序0,1,3,2,完成右边图的合并格式,只需传入列的顺序0,3,1,2。

    1:    //左边图 
    2:   MergeGridViewCell.MergeRow(Gridview1, 0, 3);
    3:    //中间图 
    4:   MergeGridViewCell.MergeRow(Gridview1, 0, 1, 3, 2);
    5:    //右边图 
    6:   MergeGridViewCell.MergeRow(Gridview1, 0, 3, 1, 2);

最后说明一下,本篇文章是在上一篇文章的基础上完成的,如果对此感兴趣的,可以先阅读 上一篇文章 ,最后附上本篇文章的源码: http://pan.baidu.com/share/link?shareid=87931&uk=2466437167

作者 :田念明
出处 : http://www.cnblogs.com/nianming/
个人网站: http://www.tnmblogs.com 欢迎访问 
本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。

作者: Leo_wl

    

出处: http://www.cnblogs.com/Leo_wl/

    

本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。

版权信息

查看更多关于GridView多行多列合并单元格(指定列合并)的详细内容...

  阅读:47次