找回密码
 立即注册

QQ登录

只需一步,快速开始

TonyKang

初级会员

11

主题

29

帖子

343

积分

初级会员

积分
343
TonyKang
初级会员   /  发表于:2017-5-23 15:50  /   查看:3748  /  回复:6
您好!

最近碰到一个奇怪的情况:
1. 有2个sheet, 简称 A 和 B
2. 我在A设置了几个events, (ClipboardPasting/ClipboardPasted/EditStarting/EditEnded/RangeChanged/CellClick),在CellClick事件中有一行代码:B.clearSelection();
3. 然后把相关数据填写进去B,然后发现 ClipboardPasting/ClipboardPasted/RangeChanged 这几个事件失效了。
4. 我调试了好久,最后就只是简单地屏蔽刚才说的那行代码( // B.clearSelection();),就什么问题都没有了。

请麻烦你们确认一下这个clearSheet方法是不是有bug,为什么会抹掉 ClipboardPasting/ClipboardPasted/RangeChanged 这几个events。
谢谢!

6 个回复

倒序浏览
TonyKang
初级会员   /  发表于:2017-5-23 15:57:41
沙发
补充一下完整一些的onclick代码:
        B.suspendPaint();
        BsuspendEvent();
        B.clear(-1, 0, -1, setting.header.length, GC.Spread.Sheets.SheetArea.viewport, GC.Spread.Sheets.StorageType.data);
        //B.clearSelection();
        B.resumeEvent();
        B.resumePaint();
回复 使用道具 举报
Clark.Pan讲师达人认证 悬赏达人认证 SpreadJS 开发认证
超级版主   /  发表于:2017-5-23 18:04:37
板凳
TonyKang 发表于 2017-5-23 15:57
补充一下完整一些的onclick代码:
        B.suspendPaint();
        BsuspendEvent();

这个需要您提供一个完整的demo,光凭目前的几句代码,我们没办法判断问题的所在。
回复 使用道具 举报
TonyKang
初级会员   /  发表于:2017-5-24 15:54:39
地板
Demo代码在附件中。
我用的是评估版,但正式版也是一模一样的现象。
我怀疑用了sheet的clearSelection()方法后,焦点的判断出了问题,现象是:我点中sheet A的一个cell,粘贴从excel拷贝的数据,却发现数据粘贴到sheet B那里去了

spreadjs.zip

507.79 KB, 下载次数: 101

回复 使用道具 举报
Clark.Pan讲师达人认证 悬赏达人认证 SpreadJS 开发认证
超级版主   /  发表于:2017-5-24 17:23:23
5#
您好,造成您的问题的原因是因为您在SHEETA的cellclick事件中清理了SHEETB,这样在cleanSelection的过程中会将焦点移至sheetB,然后粘贴时就会给sheetB粘贴,解决方法是:

sheetCommonObj.cleanSheet(sheet, setting, -1);
之后加入
me.workBook.focus(true);将焦点转换会sheetA即可。
回复 使用道具 举报
TonyKang
初级会员   /  发表于:2017-5-25 16:36:08
6#
好吧,这个方案能解决问题,可以关闭了。不过建议你们考虑一下我的这种应用场景下(多个sheet协同),是否需要转移焦点。
回复 使用道具 举报
Clark.Pan讲师达人认证 悬赏达人认证 SpreadJS 开发认证
超级版主   /  发表于:2017-5-25 16:59:02
7#
TonyKang 发表于 2017-5-25 16:36
好吧,这个方案能解决问题,可以关闭了。不过建议你们考虑一下我的这种应用场景下(多个sheet协同),是否需 ...

您提出的建议我们会考虑的,我们会将建议反馈给研发,感谢您提出的建议。
那就结帖了,有什么问题欢迎另开新帖进行询问。
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 立即注册
返回顶部