找回密码
 立即注册

QQ登录

只需一步,快速开始

spreadjs666
金牌服务用户   /  发表于:2024-2-28 20:00  /   查看:620  /  回复:3
1金币
image.png523338927.png

  1. const baseCellPaint = GC.Spread.Sheets.CellTypes.Base.prototype.paint;
  2.   GC.Spread.Sheets.CellTypes.Base.prototype.paint = function (ctx, value, x1, y1, a1, b1, style, options) {
  3.     console.log(ctx, value, x1, y1, a1, b1, style, options)
  4.     if (!ctx) {
  5.         return;
  6.     }
  7.     baseCellPaint.call(this, ctx, value, x1, y1, a1, b1, style, options);
  8.     if (checkIsStringNumber(value, style.formatter, style?.cellType)) {
  9.       ctx.save();
  10.       let base = 10;
  11.       ctx.beginPath();
  12.       ctx.moveTo(x1, y1);
  13.       ctx.lineTo(x1, y1 + base);
  14.       ctx.lineTo(x1 + base, y1);

  15.       ctx.fillStyle = '#00B061';
  16.       ctx.fill();
  17.       ctx.closePath();
  18.       ctx.restore();
  19.     }
  20.   }
复制代码
使用以上代码进行了角标设置,但是导致了筛选框中的内容也带了角标,请问该如何去除?

最佳答案

查看完整内容

重写Base Celltype本身确实是一个有风向的做法 这个是所有的单元格类型的基类。所以会影响到所有的单元格。 过滤器中,实际上也是一个sheet.所以单元格绘制会受到影响。 实际测试了一下,通过区分sheet名称可以解决这个问题,filter中的sheet名称是“sheet1” 你可以以此做一下判断,加到你的代码这行判断里 这个办法可以解决你现在的问题。但是更稳妥的做法是,不要重写base celltype,而是自己根据需要写一个 ...

3 个回复

倒序浏览
最佳答案
最佳答案
Richard.Ma讲师达人认证 悬赏达人认证 SpreadJS 开发认证
超级版主   /  发表于:2024-2-28 20:00:34
来自 2#
重写Base Celltype本身确实是一个有风向的做法 这个是所有的单元格类型的基类。所以会影响到所有的单元格。

过滤器中,实际上也是一个sheet.所以单元格绘制会受到影响。

实际测试了一下,通过区分sheet名称可以解决这个问题,filter中的sheet名称是“sheet1”
你可以以此做一下判断,加到你的代码这行判断里
image.png88793944.png

image.png104806517.png


这个办法可以解决你现在的问题。但是更稳妥的做法是,不要重写base celltype,而是自己根据需要写一个类继承Text或者Base 类型,然后再重写后设置给单元格。

回复 使用道具 举报
Richard.Ma讲师达人认证 悬赏达人认证 SpreadJS 开发认证
超级版主   /  发表于:2024-3-11 14:17:39
3#
请问上述方法是否解决了你遇到的问题,问题仍然存在的话,欢迎继续回帖沟通
回复 使用道具 举报
Richard.Ma讲师达人认证 悬赏达人认证 SpreadJS 开发认证
超级版主   /  发表于:2024-3-20 16:55:37
4#
没有看到您再回复,这个帖子先结帖了。如果问题仍未解决,欢迎继续回帖沟通
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 立即注册
返回顶部