找回密码
 立即注册

QQ登录

只需一步,快速开始

Dtttax

银牌会员

265

主题

663

帖子

2116

积分

银牌会员

积分
2116
Dtttax
银牌会员   /  发表于:2024-7-9 11:02  /   查看:2314  /  回复:15


在单元格输入了值后,然后调用Sheet.getDirtyCells() 找到关联的表格,在关联的表格打个tag做标记比如改颜色。字体加粗等等。这个时候如果要撤回就不能一次撤回所有的表单。
1、通过这个链接 https://gcdn.grapecity.com.cn/fo ... mp;page=1#pid818134只能解决当前表单的所有撤回。

2、如果在editEnded事件里面调用自己的command命令 则要两次撤回,如果重新注册一个editcell,然后方法什么都不做,在自己的事务里面setvalue。这样 command可以一次撤回,但是不会输入值后进入valuechange事件。
3、具体场景:
比如sheet5里面的C4的公式有到关联Sheet6的D4表格。如果在Sheet6的D4单元格输入数字后,给Sheet5的C4单元格加tag,字体加粗。这个时候撤回就要把Sheet5 里面C4打的tag和字体加粗也撤回

image.png478866271.png
[size=13.0667px]



15 个回复

倒序浏览
eat_grape_5
高级会员   /  发表于:2024-7-9 11:20:45
沙发
在EditEnded事件中撤回自定义命令可以参考这篇博客:https://gcdn.grapecity.com.cn/showtopic-220415-1-2.html
回复 使用道具 举报
Richard.Ma讲师达人认证 悬赏达人认证 SpreadJS 开发认证
超级版主   /  发表于:2024-7-9 11:26:42
板凳
sheet5里面的C4的公式有到关联Sheet6的D4表格

这个具体是什么意思,哪个是公式单元格,哪个是被引用的单元格
回复 使用道具 举报
dexteryao讲师达人认证 悬赏达人认证 SpreadJS 开发认证
超级版主   /  发表于:2024-7-9 11:40:50
地板
自定义的命令触发valuechange后,里面做的事情需要undo不。还是只要触发了就行
回复 使用道具 举报
Dtttax
银牌会员   /  发表于:2024-7-9 11:43:48
5#
本帖最后由 Dtttax 于 2024-7-9 11:53 编辑
dexteryao 发表于 2024-7-9 11:40
自定义的命令触发valuechange后,里面做的事情需要undo不。还是只要触发了就行

1、自发命令跟valuechange没关系,自发命令是放到enditended里面的。valuechange里面只是写了几个方法而已。


2、sheet5里面的C4的公式有到关联Sheet6的D4表格 。是这样的:
     在Sheet6的D4单元格输入值了后,sheet5涉及到的单元格加个tag。


image.png507779540.png image.png457747802.png

回复 使用道具 举报
dexteryao讲师达人认证 悬赏达人认证 SpreadJS 开发认证
超级版主   /  发表于:2024-7-9 13:57:50
6#
本帖最后由 dexteryao 于 2024-7-9 14:00 编辑

通过重新定义了一个编辑命令代替了以前的editCell,具体细节根据你的逻辑可以再改改
https://jscodemine.grapecity.com/share/280vYQYnB0SwQ_vWBLPkOw/ Demo里在B2和C3里输入内容。
主要是EndEiding里面看什么情况需要用这个自定义的命令
回复 使用道具 举报
Dtttax
银牌会员   /  发表于:2024-7-10 15:19:42
7#
本帖最后由 Dtttax 于 2024-7-10 17:49 编辑

这个跟我这个场景有点不同,比如原来的关联单元格本身tag有属性,然后单元格输入值后,给关联单元格添加属性。撤回后那个属性撤回不了。

newUndoDemo_1.zip

3.06 KB, 下载次数: 592

回复 使用道具 举报
dexteryao讲师达人认证 悬赏达人认证 SpreadJS 开发认证
超级版主   /  发表于:2024-7-10 17:59:28
8#
你那个Demo要怎么操作?
回复 使用道具 举报
Dtttax
银牌会员   /  发表于:2024-7-11 12:10:15
9#
本帖最后由 Dtttax 于 2024-7-11 18:34 编辑

1、随便一个单元格输入数据,点击F12看下console控制台的输出。 然后撤销。看下console控制台的输出。那个tag没撤回。
2、我们另外一个项目下面的代码,info.committed 始终没有值是什么问题?
   instance.bind(GSSEvents.EditEnding,(e, info)=>{
         if (!info.committed) {
              return;
          })
回复 使用道具 举报
dexteryao讲师达人认证 悬赏达人认证 SpreadJS 开发认证
超级版主   /  发表于:2024-7-12 14:36:51
10#
Dtttax 发表于 2024-7-11 12:10
1、随便一个单元格输入数据,点击F12看下console控制台的输出。 然后撤销。看下console控制台的输出。那个t ...

我写的逻辑里面只有配置特殊tag的单元格才走自定义逻辑,B2和C3那两个单元格。

committed是新版本的功能,为了区分是提交推出还是esc退出。老版本不知道是esc取消退出。
回复 使用道具 举报
12下一页
您需要登录后才可以回帖 登录 | 立即注册
返回顶部