找回密码
 立即注册

QQ登录

只需一步,快速开始

白鱼

中级会员

61

主题

227

帖子

586

积分

中级会员

积分
586
白鱼
中级会员   /  发表于:2023-11-16 14:19  /   查看:1458  /  回复:4
1金币
本帖最后由 白鱼 于 2023-11-16 14:21 编辑

需求:
1.针对未锁定单元格,需要支持F2快捷键进入编辑,高亮显示其它引用的单元格

2.针对已锁定单元格,需要支持F2快捷键高亮显示其它引用的单元格,便于查看公式关系

问题:目前可以通过自定义命令注册监听F2快捷键的命令,并且针对未锁定单元格,可以调用startEdit()方法进入编辑。如何做到第二点,针对已锁定单元格,可以在不编辑的情况下高亮显示其它引用的单元格?我这边设想方案如下:
1.是否可以直接单独设置其高亮显示引用单元格,而不需要通过进入编辑的方式去间接高亮显示?
2.如果第一种方案不可行,是否可以拿到当前单元格公式中引用其它单元格的颜色样式?我手动给其它单元格设置相同的颜色边框?这个边框样式四个角的样式怎么设置?如何有效地在用户下一次操作后移除设置的边框样式?

最佳答案

查看完整内容

您好,如果是想要丢掉当前编辑的结果的话,可以在EditEnding事件中先获取原来的值,再在EditEnded事件中将原来的值设置回去,如下所示: let origin; sheet.bind(GC.Spread.Sheets.Events.EditEnding, function (sender, args) { origin = sheet.getValue(args.row, args.col); console.log(origin); }); sheet.bind(GC.Spread.Sheets.Events.EditEnded, function (sender, args) { sheet.setValue ...

4 个回复

倒序浏览
最佳答案
最佳答案
Joestar.XuSpreadJS 开发认证
超级版主   /  发表于:2023-11-16 14:19:47
来自 3#
您好,如果是想要丢掉当前编辑的结果的话,可以在EditEnding事件中先获取原来的值,再在EditEnded事件中将原来的值设置回去,如下所示:

  let origin;
  sheet.bind(GC.Spread.Sheets.Events.EditEnding, function (sender, args) {
    origin = sheet.getValue(args.row, args.col);
    console.log(origin);
  });

  sheet.bind(GC.Spread.Sheets.Events.EditEnded, function (sender, args) {
    sheet.setValue(args.row, args.col, origin);
  });

这样就可以保留原来的值了。
回复 使用道具 举报
白鱼
中级会员   /  发表于:2023-11-16 16:33:00
2#
我这边现在使用另一种方案实现,先解锁再延时去恢复原来锁定状态,基本可以实现业务需求,但需要限制用户编辑,如果用户进行编辑了,还存在问题如下:
1.在EditEnding事件中将args.cancel = true就无法退出编辑模式;
2.修改args.editingText字段为原来的数据,实际上还是会进入editCell命令并且其值依然是编辑之后的值;
是否有一种方式可以直接在EditEnding事件中取消本次输入内容,并且不进入editCell命令
回复 使用道具 举报
白鱼
中级会员   /  发表于:2023-11-16 18:07:38
4#
Joestar.Xu 发表于 2023-11-16 18:00
您好,如果是想要丢掉当前编辑的结果的话,可以在EditEnding事件中先获取原来的值,再在EditEnded事件中将 ...

我用另一种方式实现了这个问题。感谢。
回复 使用道具 举报
Joestar.XuSpreadJS 开发认证
超级版主   /  发表于:2023-11-16 18:08:48
5#
您这边是怎么实现的呢?可否分享一下?
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 立即注册
返回顶部