GridView多行多列合並單元格(指定列合並)


GitHub項目地址:https://github.com/mingceng/merge-gridviewcell

上周寫了一篇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月的,應該都合並成一塊。使用連續列合並的方法完成這個問題,可以將列的順序進行調整,但是現在要求不能調整列的順序,那么就只能按照指定列合並了。

www.tnmblogs.com

完成上圖中間的合並格式,只需在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);

最后說明一下,本篇文章是在上一篇文章的基礎上完成的,如果對此感興趣的,可以先閱讀上一篇文章

GitHub項目地址:https://github.com/mingceng/merge-gridviewcell


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM