找回密码
 立即注册

QQ登录

只需一步,快速开始

anyOneCode

最新发帖
Joestar.XuSpreadJS 开发认证
超级版主   /  发表于:2023-9-18 18:00:38
10#
您好,根据您之前的描述,推测您是想问在某些情况下,部分右键菜单中的选项为什么不显示吗?

这是因为每个选项是否显示还受enableContext的影响,当enableContext中的结果返回false时,该选项将不会显示。
回复 使用道具 举报
anyOneCode
注册会员   /  发表于:2023-9-19 08:51:57
11#
Joestar.Xu 发表于 2023-9-18 18:00
您好,根据您之前的描述,推测您是想问在某些情况下,部分右键菜单中的选项为什么不显示吗?

这是因为每 ...

问题其他的选项可以用啊,还有个问题就是我用上面的示例代码,我的选项菜单变成英文
回复 使用道具 举报
Joestar.XuSpreadJS 开发认证
超级版主   /  发表于:2023-9-19 17:29:38
12#
我这边尝试在您之前提供的代码中复现您的问题,但是缺少一些变量的定义,请您提供一个完整的Demo,我这边复现后帮您调研一下。
回复 使用道具 举报
anyOneCode
注册会员   /  发表于:2023-9-19 17:46:39
13#
Joestar.Xu 发表于 2023-9-19 17:29
我这边尝试在您之前提供的代码中复现您的问题,但是缺少一些变量的定义,请您提供一个完整的Demo,我这边复 ...
  1. let elements = sheetList[sheetIndex].elements;
  2.       let isAllowDeleteRow = sheetList[sheetIndex].isAllowDeleteRow;
  3.       let oldOpenMenu = spread.contextMenu.onOpenMenu;

  4.       function ContextMenu() {}

  5.       ContextMenu.prototype = new GC.Spread.Sheets.ContextMenu.ContextMenu(spread);
  6.       ContextMenu.prototype.onOpenMenu = function (
  7.         menuData,
  8.         itemsDataForShown,
  9.         hitInfo,
  10.         spread
  11.       ) {
  12.         const Alltrue = [
  13.           "gc.spread.insertComment",
  14.           "formatCells",
  15.           "gc.spread.tableDelete",
  16.           "gc.spread.tableInsert",
  17.           "link",
  18.           "richText",
  19.           "defineName",
  20.           "cellTag",
  21.         ];

  22.         const coltrue = ["gc.spread.deleteRows", "gc.spread.clearContents"];

  23.         const Allfalse = [
  24.           "gc.spread.clearContents",
  25.           "gc.spread.tableDelete",
  26.           "gc.spread.insertComment",
  27.           "gc.spread.tableInsert",
  28.           "formatCells",
  29.           "link",
  30.           "richText",
  31.           "defineName",
  32.           "cellTag",
  33.         ];
  34.         // const Alltrue = ["插入批注","设置单元格格式...","超链接...","编辑富文本...","定义名称..." ,"标签..."]
  35.         // const Allfalse = ["清除内容","删除","插入批注","设置单元格格式...","超链接...","编辑富文本...","定义名称..." ,"标签..."]
  36.         const selections = spread.getSheetFromName(element.sheetName).getSelections();
  37.         console.log(selections);
  38.         console.log(itemsDataForShown);
  39.         for (let i = 0; i < itemsDataForShown.length; i++) {
  40.           var item = itemsDataForShown[i];
  41.           if (selections[0].row == -1) {
  42.             item.disable = true;
  43.             if (item.subMenu) {
  44.               item.subMenu.forEach((citem) => {
  45.                 citem.disable = true;
  46.               });
  47.             }
  48.           }
  49.           if (
  50.             !isAllowDeleteRow &&
  51.             selections[0].col == -1 &&
  52.             coltrue.includes(item.name)
  53.           ) {
  54.             item.disable = true;
  55.             if (item.subMenu) {
  56.               item.subMenu.forEach((citem) => {
  57.                 citem.disable = true;
  58.               });
  59.             }
  60.           }
  61.           if (
  62.             elements[selections[0].col]?.isAllowEdit === 1 &&
  63.             Alltrue.includes(item.name)
  64.           ) {
  65.             item.disable = true;
  66.             if (item.subMenu) {
  67.               item.subMenu.forEach((citem) => {
  68.                 citem.disable = true;
  69.                 if (
  70.                   citem.name == "gc.spread.tableDeleteRows" ||
  71.                   citem.name == "gc.spread.tableInsertRowsAbove"
  72.                 ) {
  73.                   citem.disable = false;
  74.                 }
  75.               });
  76.             }
  77.           }

  78.           if (
  79.             elements[selections[0].col]?.isAllowEdit === 0 &&
  80.             Allfalse.includes(item.name)
  81.           ) {
  82.             item.disable = true;
  83.             if (item.subMenu) {
  84.               item.subMenu.forEach((citem) => {
  85.                 citem.disable = true;
  86.                 if (citem.name == "gc.spread.tableInsertRowsAbove") {
  87.                   citem.disable = false;
  88.                 }
  89.               });
  90.             }
  91.           }
  92.         }
  93.       };

  94.       //   将自定义右键菜单赋值给spread.contextMenu
  95.       spread.contextMenu = new ContextMenu();
复制代码
回复 使用道具 举报
anyOneCode
注册会员   /  发表于:2023-9-19 17:48:30
14#

因为有些是通过数据请求来的,其中elements是一个数组对象,你可以随意设置,其中之设置一个isAllowEdit:0或者1 属性就行,isAllowDeleteRow 为布尔值
回复 使用道具 举报
Joestar.XuSpreadJS 开发认证
超级版主   /  发表于:2023-9-20 10:33:24
15#
您好,根据您提供的代码,这边运行后效果如下:

image.png40061339.png

结合您之前的描述以及您使用设计器的情况来看,您是想问为什么这个右键菜单中的选项数量与下图不一样吗?

image.png147043456.png

如果您不是想问这个的话,还请您再详细描述一下您目前的困惑和需求。
回复 使用道具 举报
anyOneCode
注册会员   /  发表于:2023-9-20 14:16:57
16#
Joestar.Xu 发表于 2023-9-20 10:33
您好,根据您提供的代码,这边运行后效果如下:

是的,有些菜单我打印看是有的,但是右键没有
回复 使用道具 举报
anyOneCode
注册会员   /  发表于:2023-9-20 14:19:35
17#
Joestar.Xu 发表于 2023-9-20 10:33
您好,根据您提供的代码,这边运行后效果如下:

而且有时候在单元格右键点击,插入他在顶部单元格没有在上方插入行的菜单
回复 使用道具 举报
12
您需要登录后才可以回帖 登录 | 立即注册
返回顶部