找回密码
 立即注册

QQ登录

只需一步,快速开始

nbygu

初级会员

28

主题

105

帖子

263

积分

初级会员

积分
263
nbygu
初级会员   /  发表于:2024-9-3 16:10  /   查看:801  /  回复:16
本帖最后由 nbygu 于 2024-9-9 17:37 编辑

关于设置options.protectionOptions.allowSelectLockedCells等于false后编辑单元格焦点点不出去问题, 有没有办法,让编辑后单元格,点击其他spread区域时失去焦点,同时焦点不能落在被lock的单元格上

16 个回复

倒序浏览
Wilson.Zhang
超级版主   /  发表于:2024-9-3 17:29:42
沙发
您好!根据您的描述,猜想您是否在对表单开启保护的同时又对其中部分单元格锁定而另一部分非锁定,而且不允许点击已锁定的单元格。那么您的需求是,对未锁定的单元格编辑后,鼠标点击Workbook其他区域时令被编辑的单元格失焦,是这样吗?如果我理解的有所偏差,请您详细介绍下您的需求场景。
回复 使用道具 举报
nbygu
初级会员   /  发表于:2024-9-4 17:19:26
板凳
Wilson.Zhang 发表于 2024-9-3 17:29
您好!根据您的描述,猜想您是否在对表单开启保护的同时又对其中部分单元格锁定而另一部分非锁定,而且不允 ...

你说的对,就是你说的这样,可以解决吗
回复 使用道具 举报
Wilson.Zhang
超级版主   /  发表于:2024-9-4 17:48:52
地板
nbygu 发表于 2024-9-4 17:19
你说的对,就是你说的这样,可以解决吗

那您的最终需求是点击锁定单元格时结束非锁定单元格的输入,结合您的使用场景,提供解决方案思路如下:
1. 注册CellClick事件,判断被点击处是否为锁定单元格。
2. 如果是锁定单元格且Spread处于焦点状态,则取消输入。

如下代码即上述方案实现:
  1. sheet.bind(GC.Spread.Sheets.Events.CellClick, function(e, args) {
  2.     console.log('cell click: ', args);
  3.     var row = args.row;
  4.     var col = args.col;
  5.     if (sheet.getCell(row, col).locked() && spread.isFocus()) {
  6.         console.log('cancel input');
  7.         spread.commandManager().execute({ cmd: "cancelInput", sheetName: args.sheetName });
  8.     }
  9. });
复制代码



回复 使用道具 举报
nbygu
初级会员   /  发表于:2024-9-4 18:13:16
5#
Wilson.Zhang 发表于 2024-9-4 17:48
那您的最终需求是点击锁定单元格时结束非锁定单元格的输入,结合您的使用场景,提供解决方案思路如下:
...

这样确实能解决焦点移除问题,但是移除之后,刚才编辑的单元格的内容又恢复回去了,没有把编辑变更的数据设置上,咋回事啊
回复 使用道具 举报
Wilson.Zhang
超级版主   /  发表于:2024-9-5 09:28:08
6#
nbygu 发表于 2024-9-4 18:13
这样确实能解决焦点移除问题,但是移除之后,刚才编辑的单元格的内容又恢复回去了,没有把编辑变更的数据 ...

如果要保留正在输入的值的话,可以令Workbook失焦即可,参考如下代码:
  1. sheet.bind(GC.Spread.Sheets.Events.CellClick, function(e, args) {
  2.     console.log('cell click: ', args);
  3.     var row = args.row;
  4.     var col = args.col;
  5.     if (sheet.getCell(row, col).locked() && spread.isFocus()) {
  6.         console.log('loss focus');
  7.         spread.focus(false);
  8.     }
  9. });
复制代码


回复 使用道具 举报
nbygu
初级会员   /  发表于:2024-9-5 11:21:59
7#
Wilson.Zhang 发表于 2024-9-5 09:28
如果要保留正在输入的值的话,可以令Workbook失焦即可,参考如下代码:

好使了,感谢大佬
回复 使用道具 举报
Wilson.Zhang
超级版主   /  发表于:2024-9-5 12:21:45
8#
nbygu 发表于 2024-9-5 11:21
好使了,感谢大佬

不客气,问题解决了就结贴了。如有问题,欢迎继续发帖沟通。
回复 使用道具 举报
nbygu
初级会员   /  发表于:2024-9-9 17:36:55
9#
Wilson.Zhang 发表于 2024-9-5 12:21
不客气,问题解决了就结贴了。如有问题,欢迎继续发帖沟通。

大佬,又出现个新问题,触发不了ValidationError事件,怎么搞啊
回复 使用道具 举报
Wilson.Zhang
超级版主   /  发表于:2024-9-9 17:55:49
10#
nbygu 发表于 2024-9-9 17:36
大佬,又出现个新问题,触发不了ValidationError事件,怎么搞啊

具体怎么说呢?对于新问题,我们鼓励发新帖子来讨论交流,这样也便于咱们在论坛中根据某些关键词检索相关问题。
回复 使用道具 举报
12下一页
您需要登录后才可以回帖 登录 | 立即注册
返回顶部