找回密码
 立即注册

QQ登录

只需一步,快速开始

园园

中级会员

79

主题

224

帖子

593

积分

中级会员

积分
593

微信认证勋章

[已处理] 脏数据功能扩展

园园
中级会员   /  发表于:2017-4-6 14:02  /   查看:3880  /  回复:7
spread js中的脏数据功能是每次修改单元格都会记录,我现在想实现,只是点保存按钮的时候才记录上一次保存的数据是什么,点保存之前,怎么修改内容都不记录,这个要怎么做呢?

7 个回复

倒序浏览
dexteryao讲师达人认证 悬赏达人认证 SpreadJS 开发认证
超级版主   /  发表于:2017-4-6 18:57:22
推荐
var dirtyCells = {}

sheet.bind(valueChanged, function(e,args) { // sheet event
   var id = args.row+"_" + args.col;
   if(dirtyCells[id]){
         dirtyCells[id].newValue = args.newValue;
   }
   else{
      dirtyCells[id] = {
         oldValue : args.oldValue,
         newValue : args.newValue
      }
   }
});

这个是个示例,用dirtyCells记录当前数据的状态。你也可以用二维数组。
或者设置到cell的tag上也可以。如果其他功能不用tag的话。最后获取到所有dirty之后再取下tag里的oldValue

sheet.bind(valueChanged, function(e,args) { // sheet event
  var tag = sheet.getTag(args.row, args.col)
   if(!tag){
         sheet.setTag(args.row,args,col,{oldValue : args.oldValue}
   }
});
回复 使用道具 举报
dexteryao讲师达人认证 悬赏达人认证 SpreadJS 开发认证
超级版主   /  发表于:2017-4-6 14:43:25
沙发
dirty只是一状态, 具体什么时候去用是您程序决定的。
你只要在点击保存的时候去获取这些cell的状态就好了,其他时候都不用关系。
获取记录之后再clearpendingchange 将状态清楚,等待下一次修改。
回复 使用道具 举报
园园
中级会员   /  发表于:2017-4-6 16:10:46
板凳
dexteryao 发表于 2017-4-6 14:43
dirty只是一状态, 具体什么时候去用是您程序决定的。
你只要在点击保存的时候去获取这些cell的状态就好了 ...

初始化单元格内容是1,修改成2,再修改成3,点击保存按钮,我想获得的是oldValue是1,但是,使用sheet.getDirtyCells()[0].oldValue获得的会是2,不是我想要的。
是不是不能通过这种方式实现了?脏数据是记录每一次改变?
回复 使用道具 举报
dexteryao讲师达人认证 悬赏达人认证 SpreadJS 开发认证
超级版主   /  发表于:2017-4-6 16:22:42
地板
如果你想要最初的值那就不行了。再Valuechanged事件了面去记录,
回复 使用道具 举报
园园
中级会员   /  发表于:2017-4-6 16:41:57
5#
dexteryao 发表于 2017-4-6 16:22
如果你想要最初的值那就不行了。再Valuechanged事件了面去记录,

哎妈呀 整不明白了
回复 使用道具 举报
竞猜
注册会员   /  发表于:2021-11-5 17:27:03
7#
复制粘贴的怎么监听修改
回复 使用道具 举报
Lynn.Dou讲师达人认证 悬赏达人认证 SpreadJS 开发认证
超级版主   /  发表于:2021-11-5 17:47:10
8#
您好,本贴时间较久,已做结帖处理。
请另开新帖,贴中详细描述您当前的问题,
以及您期待的效果,
本贴不再做回复。
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 立即注册
返回顶部