找回密码
 立即注册

QQ登录

只需一步,快速开始

sansanhw

初级会员

36

主题

69

帖子

227

积分

初级会员

积分
227
sansanhw
初级会员   /  发表于:2022-3-15 16:26  /   查看:1997  /  回复:5
1金币
flexgrid中,我需要两行两行的合并,现在设置allowmerge是自动把相同的合并了,实际是需要分成5块合并

附件: 您需要 登录 才可以下载或查看,没有帐号?立即注册

最佳答案

查看完整内容

上面贴的代码只是一个自定义合并的示例,具体到你这边的合并,可以这样写

5 个回复

倒序浏览
最佳答案
最佳答案
Richard.Ma讲师达人认证 悬赏达人认证 SpreadJS 开发认证
超级版主   /  发表于:2022-3-15 16:26:28
来自 4#
上面贴的代码只是一个自定义合并的示例,具体到你这边的合并,可以这样写

  1.             public CellRange GetMergedRange(C1FlexGrid grid, CellType cellType, CellRange rg)
  2.             {
  3.                 // we are only interested in data cells  
  4.                 // (not merging row or column headers)  
  5.                 if (cellType == CellType.Cell)
  6.                 {

  7.                     if (rg.Column == 1)
  8.                     {
  9.                         if (rg.Row % 2 == 0)
  10.                         {
  11.                             rg.Row2 = rg.Row + 1;
  12.                             grid[rg.Row2, rg.Column] = grid[rg.Row, rg.Column]==null?"": grid[rg.Row, rg.Column];
  13.                         }
  14.                         else
  15.                         {
  16.                             rg.Row = rg.Row - 1;
  17.                         }
  18.                         
  19.                     }
  20.                 }
  21.                 // done  
  22.                 return rg;
  23.             }
复制代码
回复 使用道具 举报
Richard.Ma讲师达人认证 悬赏达人认证 SpreadJS 开发认证
超级版主   /  发表于:2022-3-15 18:08:32
2#
通过自定义合并可以实现

https://www.grapecity.com/blogs/ ... wpf-and-silverlight

  1. // activate custom merge manager  
  2. flex.AllowMerging = AllowMerging.All;  
  3. flex.MergeManager = new MyMergeManager();  
复制代码


  1. /// <summary>  
  2. /// Custom merge manager that creates cell ranges spanning multiple rows and columns  
  3. /// </summary>  
  4. public class MyMergeManager : IMergeManager  
  5. {  
  6.     public CellRange GetMergedRange(C1FlexGrid grid, CellType cellType, CellRange rg)  
  7.     {  
  8.         // we are only interested in data cells  
  9.         // (not merging row or column headers)  
  10.         if (cellType == CellType.Cell)  
  11.         {  
  12.             // expand left/right  
  13.             for (int i = rg.Column; i < grid.Columns.Count - 1; i++)  
  14.             {  
  15.                 if (GetDataDisplay(grid, rg.Row, i) != GetDataDisplay(grid, rg.Row, i + 1)) break;  
  16.                 rg.Column2 = i + 1;  
  17.             }  
  18.             for (int i = rg.Column; i > 0; i--)  
  19.             {  
  20.                 if (GetDataDisplay(grid, rg.Row, i) != GetDataDisplay(grid, rg.Row, i - 1)) break;  
  21.                 rg.Column = i - 1;  
  22.             }  

  23.             // expand up/down  
  24.             for (int i = rg.Row; i < grid.Rows.Count - 1; i++)  
  25.             {  
  26.                 if (GetDataDisplay(grid, i, rg.Column) != GetDataDisplay(grid, i + 1, rg.Column)) break;  
  27.                 rg.Row2 = i + 1;  
  28.             }  
  29.             for (int i = rg.Row; i > 0; i--)  
  30.             {  
  31.                 if (GetDataDisplay(grid, i, rg.Column) != GetDataDisplay(grid, i - 1, rg.Column)) break;  
  32.                 rg.Row = i - 1;  
  33.             }  
  34.         }  

  35.         // done  
  36.         return rg;  
  37.     }  
  38.     string GetDataDisplay(C1FlexGrid grid, int r, int c)  
  39.     {  
  40.         return grid[r, c].ToString();  
  41.     }  
  42. }  
复制代码
回复 使用道具 举报
sansanhw
初级会员   /  发表于:2022-3-16 09:05:10
3#
好像不行啊,我是要实现两行两行的合并

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
回复 使用道具 举报
sansanhw
初级会员   /  发表于:2022-3-16 14:59:32
5#
搞定了,谢谢
回复 使用道具 举报
Richard.Ma讲师达人认证 悬赏达人认证 SpreadJS 开发认证
超级版主   /  发表于:2022-3-16 15:26:34
6#
好的
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 立即注册
返回顶部