找回密码
 立即注册

QQ登录

只需一步,快速开始

rex_chujie
金牌服务用户   /  发表于:2021-11-30 15:41:31
21#
如果我在其他逻辑中对该sheet的操作也同样需要绘制挂起,那还需要继续将resumeCalcService里面的参数置为false,然后再调用recalcAll(true)么,还是说reset之后,执行recalcAll(true)一次就可以保证后续公式计算的正确性了
回复 使用道具 举报
Derrick.Jiao讲师达人认证 悬赏达人认证 SpreadJS 开发认证
论坛元老   /  发表于:2021-11-30 16:25:19
22#
rex_chujie 发表于 2021-11-30 15:41
如果我在其他逻辑中对该sheet的操作也同样需要绘制挂起,那还需要继续将resumeCalcService里面的参数置为fa ...

其他操作不需要recalcAll,主要原因是在于reset会将计算依赖清除。也就是在reset之后,执行recalcAll(true)就可以了,除非再次调用reset,否则只在最后使用一次即可。
回复 使用道具 举报
Derrick.Jiao讲师达人认证 悬赏达人认证 SpreadJS 开发认证
论坛元老   /  发表于:2021-12-13 10:00:12
23#
经最后的确认,该行为不属于产品bug。不应该调用reset来清除公式,应该用clear方法。请参考下面的代码,然后之前另一个帖子所提到的reset方法应该替换为clear。
  1.    spread.suspendPaint();        // 暂停计算服务
  2.         spread.suspendCalcService(false);

  3.         sheet10.clear(-1,-1,-1,-1, 3 /*viewport*/, 1 /*just clear data*/);
  4.         sheet10.fromJSON( data10 );
  5.         sheet11.clear(-1,-1,-1,-1, 3 /*viewport*/, 1 /*just clear data*/);
  6.         sheet11.fromJSON( data11 );
  7.         data2.forEach( dataItem=>{
  8.           const { row,col,value } = dataItem;
  9.           console.log(row,col,value);
  10.           sheet11.setValue(row,col,value);
  11.         })

  12.         // 开启计算服务
  13.         spread.resumeCalcService(true);
  14.         spread.resumePaint();
复制代码


回复 使用道具 举报
123
您需要登录后才可以回帖 登录 | 立即注册
返回顶部