找回密码
 立即注册

QQ登录

只需一步,快速开始

PS_QD

金牌服务用户

7

主题

21

帖子

58

积分

金牌服务用户

积分
58
PS_QD
金牌服务用户   /  发表于:2024-10-25 11:43  /   查看:291  /  回复:5
1金币
有办法批注只有某些特定的单元格有其他的单元格右键不允许有批注吗?

最佳答案

查看完整内容

右键点击sheet页面弹出菜单由ContextMenu : onOpenMenu()控制,可以改写该方法实现您的需求,具体思路如下: 1. 复制原始右键菜单所有选项,分别记为MenuDataA和MenuDataB,对MenuDataB删除“插入批注”选项。 2. 重写ContextMenu : onOpenMenu()方法,判断右键点击时的单元格位置,据此判断是否在右键菜单中显示“插入批注”选项。 可参考如下代码: 上述代码运行效果如下动图所示:

5 个回复

倒序浏览
最佳答案
最佳答案
Wilson.Zhang
超级版主   /  发表于:2024-10-25 11:43:20
来自 4#

右键点击sheet页面弹出菜单由ContextMenu : onOpenMenu()控制,可以改写该方法实现您的需求,具体思路如下:

1. 复制原始右键菜单所有选项,分别记为MenuDataA和MenuDataB,对MenuDataB删除“插入批注”选项。
2. 重写ContextMenu : onOpenMenu()方法,判断右键点击时的单元格位置,据此判断是否在右键菜单中显示“插入批注”选项。

可参考如下代码:
  1. var oldMenuData = JSON.parse(JSON.stringify(spread.contextMenu.menuData));
  2. var newMenuData = JSON.parse(JSON.stringify(spread.contextMenu.menuData));
  3. //  从newMenuData数组中删除“插入批注”选项
  4. newMenuData.splice(56, 1);
  5. var oldOpenMenu = spread.contextMenu.onOpenMenu;
  6. //  重写onOpenMenu方法
  7. spread.contextMenu.onOpenMenu = function(menuData, itemsDataForShown, hitInfo, spread) {
  8.     if (hitInfo && hitInfo.worksheetHitInfo) {
  9.         var row = hitInfo.worksheetHitInfo.row;
  10.         var col = hitInfo.worksheetHitInfo.col;
  11.         console.log('row: ', row, ', col: ', col);

  12.         //  假设在单元格B2右键菜单中不显示“插入批注”选项
  13.         if (row === 1 && col === 1) {
  14.             menuData = newMenuData;
  15.         } else {
  16.             menuData = oldMenuData;
  17.         }
  18.         oldOpenMenu.call(spread.contextMenu, menuData, itemsDataForShown, hitInfo, spread);
  19.     }
  20. }
复制代码

上述代码运行效果如下动图所示:
右键菜单不显示插入批注.gif
回复 使用道具 举报
Wilson.Zhang
超级版主   /  发表于:2024-10-25 17:28:31
2#
本帖最后由 Wilson.Zhang 于 2024-10-25 17:44 编辑

您好!请问下您的需求是希望对某些单元格右键时右键菜单中没有“插入批注“这个选项吗?
回复 使用道具 举报
PS_QD
金牌服务用户   /  发表于:2024-10-28 10:44:32
3#
Wilson.Zhang 发表于 2024-10-25 17:28
您好!请问下您的需求是希望对某些单元格右键时右键菜单中没有“插入批注“这个选项吗?

是的
回复 使用道具 举报
PS_QD
金牌服务用户   /  发表于:2024-10-29 13:54:06
5#
Wilson.Zhang 发表于 2024-10-28 11:27
右键点击sheet页面弹出菜单由ContextMenu : onOpenMenu()控制,可以改写该方法实现您的需求,具体思路如 ...

好的 谢谢
回复 使用道具 举报
Wilson.Zhang
超级版主   /  发表于:2024-10-29 15:00:07
6#

不客气,从跟帖回复中了解到您的问题已得到了有效解答,那就结帖了。如有新问题,欢迎发新帖沟通。
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 立即注册
返回顶部