请选择 进入手机版 | 继续访问电脑版
 找回密码
 立即注册

QQ登录

只需一步,快速开始

硕㏒

金牌服务用户

86

主题

230

帖子

734

积分

金牌服务用户

积分
734
硕㏒
金牌服务用户   /  发表于:2025-6-25 15:00  /   查看:62  /  回复:1
1金币
问题描述
在使用 SpreadJS 时,我遇到了关于脏数据单元格检测的问题。
场景如下:
  • 单元格 A1 输入值为 1;
  • 单元格 A2 输入值为 2;
  • 单元格 A3 设置为公式 A1 + A2,自动计算得出结果。
此时,点击“保存”按钮,调用 sheet.getDirtyCells() 方法获取脏数据单元格。控制台输出显示有三个发生变化的单元格:A1、A2 和 A3,这与预期一致。
接着调用 sheet.clearPendingChanges() 方法,清除所有待处理的变更。
后续操作如下:
  • 在页面中将 A1 的值修改为 2,但不点击保存按钮;
  • 随后再次将 A1 的值改回为 1;
  • 此时调用 sheet.getDirtyCells() 获取脏数据单元格。
问题现象:
尽管 A1 的值最终恢复为初始值(即从 1 → 2 → 1),在最后一次获取脏数据时,A1 仍然被标记为脏数据单元格。
期望行为:
由于 A1 的值在整个过程中没有发生实际变化(相对于上一次调用 clearPendingChanges() 后的状态),我们希望它在最后一步中不被识别为脏数据单元格。
问题核心:
SpreadJS 等表格组件是否具备自动判断单元格内容是否真正发生变化的能力?
如果不能,是否有推荐的方法或策略来实现“只有实际内容发生变化的单元格才被视为脏数据”的逻辑?

1 个回复

倒序浏览
Joestar.XuSpreadJS 开发认证
超级版主   /  发表于:2025-6-25 15:15:40
沙发
您好,

getDirtyCells接口目前只具备记录单元格发生变化的能力,不具备判断单元格在变化后是否和变化前的值是否一致的能力,要实现这个需求,需要您这边自行实现。

最简单的方式,是遍历所有的单元格,来判断单元格是否变化。

或者可以在getDirtyCells的基础上,获取所有脏单元格的坐标,然后和旧数据进行对比来实现。
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 立即注册
返回顶部