请选择 进入手机版 | 继续访问电脑版
 找回密码
 立即注册

QQ登录

只需一步,快速开始

长安/

注册会员

14

主题

48

帖子

146

积分

注册会员

积分
146
长安/
注册会员   /  发表于:2024-7-8 21:28  /   查看:144  /  回复:8
30金币
本帖最后由 长安/ 于 2024-7-8 21:37 编辑

image.png686606750.png
如何删除掉右键菜单的某一项?
image.png959817504.png
上一级被禁用了, 但是下一级还是能选




image.png602767333.png

8 个回复

倒序浏览
eat_grape_5
中级会员   /  发表于:2024-7-9 08:58:00
沙发
spread.contextMenu.menuData属性包含了右键菜单所有选项信息,从其中删除选项即可。

关于右键菜单详情,可参考官方文档:
https://demo.grapecity.com.cn/spreadjs/help/docs/faqs/contextMenu/custom-part1
https://demo.grapecity.com.cn/spreadjs/help/docs/faqs/contextMenu/custom-part2
回复 使用道具 举报
长安/
注册会员   /  发表于:2024-7-9 09:54:26
板凳
eat_grape_5 发表于 2024-7-9 08:58
spread.contextMenu.menuData属性包含了右键菜单所有选项信息,从其中删除选项即可。

关于右键菜单详情 ...

请问第二个问题怎么处理, 没看到相关内容
回复 使用道具 举报
eat_grape_5
中级会员   /  发表于:2024-7-9 11:57:05
地板
长安/ 发表于 2024-7-9 09:54
请问第二个问题怎么处理, 没看到相关内容

我发现禁用菜单选项的子菜单项可见,但不可选,如下动图所示:
菜单选项禁用后子菜单项可见但不可用.gif

楼主的情况是这样吗?如有理解不一致的地方,请楼主再详细介绍下,谢谢!
回复 使用道具 举报
长安/
注册会员   /  发表于:2024-7-9 14:15:49
5#
eat_grape_5 发表于 2024-7-9 11:57
我发现禁用菜单选项的子菜单项可见,但不可选,如下动图所示:

image.png427958373.png 我的禁用是这样写的, 现在就是禁用之后子菜单可见也可选 image.png712861327.png
回复 使用道具 举报
eat_grape_5
中级会员   /  发表于:2024-7-9 15:17:50
6#
长安/ 发表于 2024-7-9 14:15
我的禁用是这样写的, 现在就是禁用之后子菜单可见也可选

楼主定义的这几个菜单还有子项,在代码中遍历将菜单项设为不可见时,同时检查其是否有子项,如果有则将子项同步设为不可见。相应地,菜单父项和子项的可见于不可见设置较为灵活。楼主的代码逻辑ok的,加上菜单子项的判断和状态设置即可。可参考如下代码:
  1.   function addMenu(designer) {
  2.       let oldOpenMenu = designer.getWorkbook().contextMenu.onOpenMenu;
  3.       designer.getWorkbook().contextMenu.onOpenMenu = function(menuData, itemsDataForShown, hitInfo, spread) {
  4.       oldOpenMenu.apply(this, arguments);
  5.       console.log(itemsDataForShown);
  6.       itemsDataForShown.forEach(item => {
  7.           if (item.text === '筛选' || item.text === '排序' ||
  8.               item.text === '插入批注' || item.text === '空单元格必填' || item.text === '复选框' ||
  9.               item.text === '升序' || item.text === '降序') {
  10.                   if (item.subMenu) {
  11.                       item.subMenu.forEach(subMenu => subMenu.disable = true);
  12.                   }
  13.               item.disable = true;
  14.            }
  15.        })
  16.   };
复制代码


评分

参与人数 1金币 +1000 收起 理由
Joestar.Xu + 1000 赞一个!

查看全部评分

回复 使用道具 举报
Joestar.XuSpreadJS 开发认证
超级版主   /  发表于:2024-7-9 17:52:27
7#
eat_grape_5 发表于 2024-7-9 15:17
楼主定义的这几个菜单还有子项,在代码中遍历将菜单项设为不可见时,同时检查其是否有子项,如果有则将子 ...

这你也会?什么时候入职葡萄城
回复 使用道具 举报
eat_grape_5
中级会员   /  发表于:2024-7-9 18:13:03
8#
Joestar.Xu 发表于 2024-7-9 17:52
这你也会?什么时候入职葡萄城

哈哈,版主大人,我是论坛里的游击队员
回复 使用道具 举报
Joestar.XuSpreadJS 开发认证
超级版主   /  发表于:7 天前
9#
eat_grape_5 发表于 2024-7-9 18:13
哈哈,版主大人,我是论坛里的游击队员

回复 使用道具 举报
您需要登录后才可以回帖 登录 | 立即注册
返回顶部