找回密码
 立即注册

QQ登录

只需一步,快速开始

我是火车王

注册会员

5

主题

12

帖子

53

积分

注册会员

积分
53
我是火车王
注册会员   /  发表于:2024-3-18 14:04  /   查看:2842  /  回复:6
2金币
Spread事件会更改三个单元格值,怎么才能一次ctrl+z撤回三个单元格的值,UndoManager.PerforUnaction一次只能放一个行为,没办法多个

6 个回复

倒序浏览
Richard.Ma讲师达人认证 悬赏达人认证 SpreadJS 开发认证
超级版主   /  发表于:2024-3-18 18:21:22
沙发
是的,UndoManager目前没有办法实现你的需求,也没有其他的解决办法。
回复 使用道具 举报
我是火车王
注册会员   /  发表于:2024-3-20 18:48:55
板凳
Richard.Ma 发表于 2024-3-18 18:21
是的,UndoManager目前没有办法实现你的需求,也没有其他的解决办法。

谢谢你的回答,还有一个问题,在执行redo的过程中调用了事件,在事件里面的UndoManager方法不能够正常使用吗
回复 使用道具 举报
Richard.Ma讲师达人认证 悬赏达人认证 SpreadJS 开发认证
超级版主   /  发表于:2024-3-21 15:57:47
地板
有具体的代码吗,你是在ActionComplete事件中来使用的吗?
回复 使用道具 举报
L1JiaHang.
注册会员   /  发表于:2024-3-21 16:47:02
5#
Richard.Ma 发表于 2024-3-21 15:57
有具体的代码吗,你是在ActionComplete事件中来使用的吗?

代码不方便给,剪切值之后执行Redo,在执行redo的时候,会改变单元格的值,然后进到CellChange里面,然后CellChange里面会执行新的UndoManager的剪切方法,但是值并没有被剪切掉
回复 使用道具 举报
L1JiaHang.
注册会员   /  发表于:2024-3-21 16:51:23
6#
Richard.Ma 发表于 2024-3-21 15:57
有具体的代码吗,你是在ActionComplete事件中来使用的吗?

是因为代码执行顺序吗,可是如果没有redo过,会触发cellchange事件吗,还是剪切之后又执行了一次redo
回复 使用道具 举报
Richard.Ma讲师达人认证 悬赏达人认证 SpreadJS 开发认证
超级版主   /  发表于:2024-3-21 18:02:45
7#
理论上来说你在UndoManager的事件中这样用,确实会造成循环的调用。

如果需要协助调查,请给一个复现问题的demo,我帮你看看原因
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 立即注册
返回顶部