找回密码
 立即注册

QQ登录

只需一步,快速开始

Joestar.Xu SpreadJS 开发认证

超级版主

44

主题

7834

帖子

1万

积分

超级版主

Rank: 8Rank: 8

积分
10190

SpreadJS 认证SpreadJS 高级认证

Joestar.Xu SpreadJS 开发认证
超级版主   /  发表于:2023-6-30 09:19  /   查看:1094  /  回复:0
本帖最后由 Joestar.Xu 于 2023-6-30 09:20 编辑

在某些情况下,我们需要限制用户进行右键菜单中的复制操作的行为,除了使用itemsDataForShown和hitInfo来联合实现以外,还可以通过visibleContext来进行控制。



代码如下:


  1. window.onload = function () {
  2.   let designerConfig = JSON.parse(
  3.     JSON.stringify(GC.Spread.Sheets.Designer.DefaultConfig)
  4.   );

  5.   designerConfig.commandMap = {};

  6.   const commandNames = [
  7.     "designerPasteAll",
  8.     "pasteFormula",
  9.     "designerPasteValues",
  10.     "designerPasteFormatting",
  11.     "pasteValuesFormatting",
  12.     "pasteFormulaFormatting",
  13.     "contextMenuPaste",
  14.   ];
  15.   commandNames.forEach((commandName) => {
  16.   const command = GC.Spread.Sheets.Designer.getCommand(commandName);
  17.   command.visibleContext = "showPasteItem";
  18.     designerConfig.commandMap[commandName] = command;
  19.   });

  20.   let designer = new GC.Spread.Sheets.Designer.Designer(
  21.     "gc-designer-container",
  22.     designerConfig
  23.   );

  24.   let spread = designer.getWorkbook();

  25.   let sheet = spread.getActiveSheet();

  26.   designer.setData("showPasteItem", true);

  27.   document.querySelector("#button1").addEventListener("click", function () {
  28.     designer.setData("showPasteItem", true);
  29.   });

  30.   document.querySelector("#button2").addEventListener("click", function () {
  31.   designer.setData("showPasteItem", false);
  32.   });
  33. };
复制代码


在上面的代码中我设置了一个showPasteItem的属性,将它的值赋给了需要设置的命令的visibleContext。

这样就可以通过两个按钮来实现是否显示右键中的复制选项。

效果图如下:

5.gif755098266.png

image.png598809508.png

0 个回复

您需要登录后才可以回帖 登录 | 立即注册
返回顶部