找回密码
 立即注册

QQ登录

只需一步,快速开始

credream

中级会员

110

主题

296

帖子

828

积分

中级会员

积分
828

活字格认证

credream
中级会员   /  发表于:2019-3-11 17:12  /   查看:3087  /  回复:3
flexgrid,我想做到,合并的时候,trim掉空格,并且不区分大小写合并,这个怎么实现啊,在案例代码中,没有类似的代码,
cllmerage案例已经看了,能给些实现的代码嘛,谢谢

3 个回复

倒序浏览
Richard.Ma讲师达人认证 悬赏达人认证 SpreadJS 开发认证
超级版主   /  发表于:2019-3-12 12:22:15
沙发
在开发包的CustomMerge演示程序的基础上写了一个demo,见附件
其实就是重写了在合并单元格,对数据进行对比的时候,先对数据进行Trim和ToLower的操作
核心代码如下
  1. public class FlexSchedule : C1.Win.C1FlexGrid.C1FlexGrid
  2.         {
  3.                 override public CellRange GetMergedRange(int row, int col, bool clip)
  4.                 {
  5.                         // create basic cell range
  6.                         CellRange rg = GetCellRange(row, col);

  7.                         // expand left/right
  8.                         int i;
  9.                         int cnt = Cols.Count;
  10.                         int ifx = Cols.Fixed;
  11.                         for (i = rg.c1; i < cnt-1; i++)
  12.                         {
  13.                                 if (GetDataDisplay(rg.r1, i).Trim().ToLower() != GetDataDisplay(rg.r1, i+1).Trim().ToLower()) break;
  14.                                 rg.c2 = i+1;
  15.                         }
  16.                         for (i = rg.c1; i > ifx; i--)
  17.                         {
  18.                                 if (GetDataDisplay(rg.r1, i).Trim().ToLower() != GetDataDisplay(rg.r1, i-1).Trim().ToLower()) break;
  19.                                 rg.c1 = i-1;
  20.                         }

  21.                         // expand up/down
  22.                         cnt = Rows.Count;
  23.                         ifx = Rows.Fixed;
  24.                         for (i = rg.r1; i < cnt-1; i++)
  25.                         {
  26.                                 if (GetDataDisplay(i, rg.c1).Trim().ToLower() != GetDataDisplay(i+1, rg.c1).Trim().ToLower()) break;
  27.                                 rg.r2 = i+1;
  28.                         }
  29.                         for (i = rg.r1; i > ifx; i--)
  30.                         {
  31.                                 if (GetDataDisplay(i, rg.c1).Trim().ToLower() != GetDataDisplay(i-1, rg.c1).Trim().ToLower()) break;
  32.                                 rg.r1 = i-1;
  33.                         }

  34.                         // done
  35.                         return rg;
  36.                 }
  37.         }
复制代码


本帖子中包含更多资源

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

x
回复 使用道具 举报
credream
中级会员   /  发表于:2019-4-2 20:57:33
板凳
Richard.Ma 发表于 2019-3-12 12:22
在开发包的CustomMerge演示程序的基础上写了一个demo,见附件
其实就是重写了在合并单元格,对数据进行对 ...

你好,试了一下,这个方法,我们这边数据条数1万条左右的时候,有6列需要合并,这时候会出现明显的性能问题,这个还可以优化嘛?
回复 使用道具 举报
JeffryLI
葡萄城公司职员   /  发表于:2019-4-8 12:26:40
地板
手动合并的检测机制比较多,所以会很耗性能。
请点击评分,对我5分评价,谢谢!

葡萄城控件服务团队
官方网站: https://www.grapecity.com.cn/developer
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 立即注册
返回顶部