请选择 进入手机版 | 继续访问电脑版

白鱼

中级会员

62

主题

230

帖子

594

积分

中级会员

积分
594
白鱼
中级会员   /  发表于:2022-11-25 10:46  /   查看:2242  /  回复:7
1金币
本帖最后由 白鱼 于 2022-12-1 11:10 编辑

昨天发帖问了活动单元格移动时如何监听的问题,如贴https://gcdn.grapecity.com.cn/showtopic-157816-1-1.html

撤销移动时发现两个问题:
1.撤销移动时,主动将RowChanging事件回调中的args.cancel置为true无法取消此次撤销事件,而正向移动时可以取消
2.且撤销时无法像正向移动时那样通过sheet.getSelections()方法获取到原位置信息,此时获取到的区域信息是当前选中的,有没有其它办法获取呢?



--------------------------------------2022.12.01 试验图示--------------------------------
步骤如图:
描述:在A5单元格选择活动单元格下移,此时进入RowChanging事件,其参数中row=200(200是当前sheet页最大行数),而不是当前单元格行5。因为这个原因,之前我通过sheet.getSelections()方法拿到了当前选中的区域,完成了正向处理。撤销时如最后一图所示,此时row=200,依然无法获取到撤销的行或者说区域。



附件: 您需要 登录 才可以下载或查看,没有帐号?立即注册

最佳答案

查看完整内容

嗯,那么还是可以按照你之前用getSelections的思路,目前拿不到的原因是,getSelections时选中区域还没还原回去,可以加一个setTimeout,通过在setTimeout中执行方法,比如下面这样,测试是可以拿到还原回去的选中区域的

7 个回复

最佳答案
最佳答案
Richard.Ma讲师达人认证 悬赏达人认证 SpreadJS 开发认证
超级版主   /  发表于:2022-11-25 10:46:54
来自 6#
嗯,那么还是可以按照你之前用getSelections的思路,目前拿不到的原因是,getSelections时选中区域还没还原回去,可以加一个setTimeout,通过在setTimeout中执行方法,比如下面这样,测试是可以拿到还原回去的选中区域的

  1. sheet.bind(GC.Spread.Sheets.Events.RowChanged, function (e,info) {
  2. setTimeout("console.log(sheet.getSelections()[0])",100);
  3.    
  4. });
复制代码
回复 使用道具 举报
xcymoo
超级版主   /  发表于:2022-11-25 17:12:16
2#
你好,现在暂时无法取消撤销
第二个问题,您是想获取撤销之前的选中状态吗?如果是这样的话,您可以在插入行时自己维护一份位置信息,spread也暂时没有提供选中状态的历史信息。如果是想获取撤销的行的位置信息,在args[1]的row就可以拿到
回复 使用道具 举报
白鱼
中级会员   /  发表于:2022-11-29 17:10:48
3#
xcymoo 发表于 2022-11-25 17:12
你好,现在暂时无法取消撤销
第二个问题,您是想获取撤销之前的选中状态吗?如果是这样的话,您可以在插入 ...

这个我之前是移动单元格,撤销的行的位置显示的就是最后一行,但是实际上并不是的,移动单元格的时候显示的row也是最后一行而不是具体位置,所以才会去找当时选中的区域来进行操作
回复 使用道具 举报
Richard.Ma讲师达人认证 悬赏达人认证 SpreadJS 开发认证
超级版主   /  发表于:2022-11-29 18:39:43
4#
您描述的场景步骤比较复杂,能录制一个gif或者说明一下详细的操作步骤,我们再帮你调研看看是否有方案,目前没有太理解您的需求
回复 使用道具 举报
白鱼
中级会员   /  发表于:2022-12-1 11:11:23
5#
Richard.Ma 发表于 2022-11-29 18:39
您描述的场景步骤比较复杂,能录制一个gif或者说明一下详细的操作步骤,我们再帮你调研看看是否有方案,目 ...

回复无法粘贴图片,我已经将步骤和描述更新到上面内容中,辛苦查看一下
回复 使用道具 举报
白鱼
中级会员   /  发表于:2022-12-1 18:41:36
7#
Richard.Ma 发表于 2022-12-1 15:51
嗯,那么还是可以按照你之前用getSelections的思路,目前拿不到的原因是,getSelections时选中区域还没还原 ...

好的我试试
回复 使用道具 举报
Richard.Ma讲师达人认证 悬赏达人认证 SpreadJS 开发认证
超级版主   /  发表于:2022-12-1 18:50:39
8#
好的
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 立即注册
返回顶部