找回密码
 立即注册

QQ登录

只需一步,快速开始

ttnkh21

初级会员

51

主题

151

帖子

490

积分

初级会员

积分
490
ttnkh21
初级会员   /  发表于:2023-5-3 12:39  /   查看:1720  /  回复:7
10金币
本帖最后由 Richard.Ma 于 2023-9-11 14:17 编辑




根据限制条件,应该只有'salesDiff' he 'expensesDiff'
两列会改变背景颜色,然而移动滚动条之后发现,会随机出现改变背景颜色的列。


就是官网这个例子,我增加了一些列,让列数量超出显示宽度后,会出现这个问题。

是想根据条件动态渲染单元格背景色和文字颜色,并且导出excel后,颜色样式可以保留。
附件: 您需要 登录 才可以下载或查看,没有帐号?立即注册

最佳答案

查看完整内容

您好,请参考以下链接的示例解决这个问题 https://jscodemine.grapecity.com/sample/IPu05aWqXEm2UA-279Ve_w/ 关键代码

7 个回复

倒序浏览
最佳答案
最佳答案
Richard.Ma讲师达人认证 悬赏达人认证 SpreadJS 开发认证
超级版主   /  发表于:2023-5-3 12:39:37
来自 8#
您好,请参考以下链接的示例解决这个问题
https://jscodemine.grapecity.com/sample/IPu05aWqXEm2UA-279Ve_w/

关键代码
  1. // custom rendering for "Diff" columns
  2.         if (e.panel == s.cells) {
  3.             var col = s.columns[e.col];
  4.             if (e.row > 0 && (col.binding == 'salesDiff' || col.binding == 'expensesDiff')) {
  5.                 var vnow = s.getCellData(e.row, e.col - 1), vprev = s.getCellData(e.row - 1, e.col - 1), diff = (vnow / vprev) - 1;
  6.                 console.log(e.col,s.columns[e.col]);
  7.                // Only apply background color to "Diff" columns
  8.             if (col.binding == 'salesDiff' || col.binding == 'expensesDiff') {
  9.                 e.cell.style.backgroundColor = "#FF7452";
  10.             }
  11.             
  12.                 // format the cell
  13.                 var html = '<div class="diff-{cls}">' +
  14.                     '<span style="font-size:75%">{val}</span> ' +
  15.                     '<span style="font-size:120%" class="wj-glyph-{glyph}"></span>';
  16.                 html = html.replace('{val}', Globalize.format(diff, col.format));
  17.                 if (diff < 0.01) {
  18.                     html = html.replace('{cls}', 'down').replace('{glyph}', 'down');
  19.                 }
  20.                 else if (diff > 0.01) {
  21.                     html = html.replace('{cls}', 'up').replace('{glyph}', 'up');
  22.                 }
  23.                 else {
  24.                     html = html.replace('{cls}', 'none').replace('{glyph}', 'circle');
  25.                 }
  26.                 e.cell.innerHTML = html;
  27.                 } else {
  28.             // Clear background color for non-"Diff" columns
  29.             e.cell.style.backgroundColor = '';
  30.             }
  31.         }
  32.     });
复制代码
回复 使用道具 举报
Richard.Ma讲师达人认证 悬赏达人认证 SpreadJS 开发认证
超级版主   /  发表于:2023-5-4 11:05:25
2#
是的,官网示例中,这个grid绑定了数据源,限制条件是根据这两列绑定的字段名称来限制的,

我不知道你说的“增加了一些列,让列数量超出显示宽度”是怎么操作的,也就说我怎么重现你的问题呢?麻烦给出详细的步骤
回复 使用道具 举报
ttnkh21
初级会员   /  发表于:2023-5-4 14:21:09
3#
Richard.Ma 发表于 2023-5-4 11:05
是的,官网示例中,这个grid绑定了数据源,限制条件是根据这两列绑定的字段名称来限制的,

我不知道你说 ...


官网示例中,这样随意增加一些列,作用是为了可以出现横向滚动条,横向滚动触发视图渲染。



数据生成中,也是同理:



之后,增加修改单元格背景颜色的代码:

根据条件:
if (e.row > 0 && (col.binding == 'salesDiff' || col.binding == 'expensesDiff'))

应 只有salesDiff / expensesDiff两列背景色被改变
但 移动横向滚动条,其他列会随机出现背景色被改变的现象。




本帖子中包含更多资源

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

x
回复 使用道具 举报
Richard.Ma讲师达人认证 悬赏达人认证 SpreadJS 开发认证
超级版主   /  发表于:2023-5-4 18:07:37
4#
问题可以重现,看起来可能是重绘时的bug,目前想不到什么解决办法

此问题我作为bug提交研发,帖子暂时保留处理
回复 使用道具 举报
ttnkh21
初级会员   /  发表于:2023-9-9 12:55:48
5#
这个问题处理了吗?
回复 使用道具 举报
ttnkh21
初级会员   /  发表于:2023-9-9 12:56:56
6#
Richard.Ma 发表于 2023-5-4 18:07
问题可以重现,看起来可能是重绘时的bug,目前想不到什么解决办法

此问题我作为bug提交研发,帖子暂时保 ...

这个问题处理了吗?
回复 使用道具 举报
Richard.Ma讲师达人认证 悬赏达人认证 SpreadJS 开发认证
超级版主   /  发表于:2023-9-11 14:17:49
7#
您好,此bug仍在调研修复,有新的进展我会在帖子后面回复更新
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 立即注册
返回顶部