找回密码
 立即注册

QQ登录

只需一步,快速开始

FzcSuiY

注册会员

10

主题

39

帖子

157

积分

注册会员

积分
157
FzcSuiY
注册会员   /  发表于:2023-10-13 11:27  /   查看:1453  /  回复:3
1金币
本帖最后由 Ellia.Duan 于 2023-10-30 15:50 编辑


产品:SpreadJS
版本:v15

百万数据的sheet页中如何快速判断sheet页内容被修改过?使用场景,前端导入百万数据量,保存到服务器,中间有可能会修改sheet页面的值。请问如何能快速判断?

最佳答案

查看完整内容

您好,我明白您的意思,您是希望在用户更改了百万数据中的某几个值时能够快速判断出当前工作簿是否做了修改是吗? 对于该需求我们有两种方案:脏数据方案和designer标志位方案,您可以根据您自己具体的情况来选择和修改 1. 脏数据方案 你可以通过调用表单上的 getDirtyRows 方法来获取所有的脏行。如果存在绑定的数据,用户可以从脏行中获取 row, item, 和 originalItem 信息。否则,只能获得行数据。 你可以通过调用 getDir ...

3 个回复

倒序浏览
最佳答案
最佳答案
Richard.HuangSpreadJS 开发认证
超级版主   /  发表于:2023-10-13 11:27:43
来自 2#
本帖最后由 Richard.Huang 于 2023-10-13 14:44 编辑

您好,我明白您的意思,您是希望在用户更改了百万数据中的某几个值时能够快速判断出当前工作簿是否做了修改是吗?

对于该需求我们有两种方案:脏数据方案和designer标志位方案,您可以根据您自己具体的情况来选择和修改
1. 脏数据方案
你可以通过调用表单上的 getDirtyRows 方法来获取所有的脏行。如果存在绑定的数据,用户可以从脏行中获取 row, item, 和 originalItem 信息。否则,只能获得行数据。
你可以通过调用 getDirtyCells 方法来获取脏单元格。
API:https://demo.grapecity.com.cn/sp ... sheet#getdirtycells
示例:
var cells = sheet.getDirtyCells();
if (cells.length > 0) {
    console.log("当前工作簿存在脏数据行")
}
缺点:只有单元格值的变更才会导致成为脏数据,如果是样式的更改例如字体颜色等,不会被统计到脏数据中。
您可以参考学习指南中的例子来实现您的方案:https://demo.grapecity.com.cn/sp ... rty-items#timestamp

2. designer标志位方案
如果您使用的是Spread-Designer在线表格编辑器而不是Spread,那么您可以考虑designer标志位的方案。designer会存储一个isFileModified的标志位来体现当前工作簿是否被修改了,您只要在需要判断时调取getData("isFileModified")方法,如果返回值为true则表示当前工作簿被修改过
API:https://demo.grapecity.com.cn/sp ... er.Designer#getdata
示例:
// 导入百万行数据
...
...
...
// 获取当前表格编辑器
var designer = GC.Spread.Sheets.Designer.findControl(document.getElementById("gc-designer-container"));
// 给标志位初始化
designer.setData('isFileModified', false)
// 想要判断是否有修改
if(designer.getData('isFileModified')){
    console.log("当前工作簿存在脏数据行")
}
优点:该方案对样式的更改也是可以监控到的
缺点:V15版本对该标志位的功能不太完善,只能监听到该工作簿单元格值被修改的行为,对于复制粘贴行为造成的数据修改、拖拽填充造成的修改无法监听到。如果想要对此类操作也能监听到,建议升级到V16版本

附件的文件是我对上述两种方案一个实现的demo,您可以下载到本地进行测试

15.0.0版本的对操作数据进行监听.html

4.31 KB, 下载次数: 71

回复 使用道具 举报
FzcSuiY
注册会员   /  发表于:2023-10-13 18:04:57
3#
Richard.Huang 发表于 2023-10-13 14:37
您好,我明白您的意思,您是希望在用户更改了百万数据中的某几个值时能够快速判断出当前工作簿是否做了修改 ...

优秀~ 感谢 非常详细
回复 使用道具 举报
Ellia.DuanSpreadJS 开发认证
超级版主   /  发表于:2023-10-13 18:16:03
4#
感谢您的肯定,那本帖就先结帖啦,有问题欢迎发新帖询问。
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 立即注册
返回顶部