找回密码
 立即注册

QQ登录

只需一步,快速开始

张某某

注册会员

7

主题

25

帖子

76

积分

注册会员

积分
76
张某某
注册会员   /  发表于:2023-8-15 11:21  /   查看:823  /  回复:3
1金币
1、需求:控制下面这些单元格右键菜单的显示和隐藏,如下图:

image.png116559142.png

2、页面初始化的时候,通过designer.setData()方法设置上面右键菜单为隐藏,如下图:
image.png55137328.png

3、页面初始化显示的时候,单元格右键菜单被正确隐藏了,如下图:
企业微信截图_e1bd89e0-4366-4027-92a9-ba356af542a2.png137103575.png

4、点击上图中的”显示菜单“按钮来显示被隐藏的菜单,然后重新右键单元格,被隐藏掉的菜单却没有显示出来,如下图:
企业微信截图_1535ca4b-6d52-479b-9b33-dc5bfc505690.png501525573.png

5、问题:为什么单元格的右键菜单没有显示出来?

spreadDesinger.zip

386.31 KB, 下载次数: 22

最佳答案

查看完整内容

您好,这边调研了一下,visibleContext并不是简单的布尔表达式,不能通过您代码中简单的追加一个属性来进行控制,想要精准控制,需要给visibleContext中的每一个“部分”都追加上showRightMenuItem。 如: 原始visibleContext:ClickViewport && !PivotTableSelected || ClickCorner || ClickColHeader || ClickRowHeader || TableSheetClickViewport || TableSheetClickCorner || TableSheetClickColHeader || TableSheetC ...

3 个回复

倒序浏览
最佳答案
最佳答案
Joestar.XuSpreadJS 开发认证
超级版主   /  发表于:2023-8-15 11:21:07
来自 2#
您好,这边调研了一下,visibleContext并不是简单的布尔表达式,不能通过您代码中简单的追加一个属性来进行控制,想要精准控制,需要给visibleContext中的每一个“部分”都追加上showRightMenuItem。

如:

原始visibleContext:ClickViewport && !PivotTableSelected || ClickCorner || ClickColHeader || ClickRowHeader ||
TableSheetClickViewport || TableSheetClickCorner || TableSheetClickColHeader || TableSheetClickRowHeader

修改后的visibleContext:ClickViewport && showRightMenuItem && !PivotTableSelected || ClickCorner && showRightMenuItem || ClickColHeader && showRightMenuItem || ClickRowHeader && showRightMenuItem ||\nTableSheetClickViewport && showRightMenuItem || TableSheetClickCorner && showRightMenuItem || TableSheetClickColHeader && showRightMenuItem || TableSheetClickRowHeader && showRightMenuItem

所以我改写了一下你这个Demo:

  commandNames.forEach(commandName => {
    const command = GC.Spread.Sheets.Designer.getCommand(commandName);
    // 用 showRightMenuItem 来控制菜单的隐藏和显示
    let context = command.visibleContext.replaceAll("||", "&& showRightMenuItem ||");
    context = context + " && showRightMenuItem";
   
    command.visibleContext = context;

    config.commandMap[commandName] = command;
  });

应该就可以正常显示和隐藏了。
SpreadJS 17.0.9 | GcExcel 7.1.2 已发布~
回复 使用道具 举报
张某某
注册会员   /  发表于:2023-8-15 16:02:42
3#
好的,明白了
回复 使用道具 举报
Joestar.XuSpreadJS 开发认证
超级版主   /  发表于:2023-8-15 17:03:41
4#
那就先结贴了,后续有其他问题的话随时开贴提问哈。
SpreadJS 17.0.9 | GcExcel 7.1.2 已发布~
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 立即注册
返回顶部