找回密码
 立即注册

QQ登录

只需一步,快速开始

想念
中级会员   /  发表于:2024-4-28 16:54  /   查看:353  /  回复:5
1金币
本帖最后由 想念 于 2024-4-28 16:56 编辑

需求:不同单元格位置显示不同的自定义菜单,这些单元格位置信息都是后台数据返回的。具体如下 image.png36737975.png 红色框的位置右击只显示“新建调整”,蓝色区域右击时只显示“取消调整”。

5 个回复

倒序浏览
Joestar.XuSpreadJS 开发认证
超级版主   /  发表于:2024-4-28 17:14:10
沙发
您好,请参考以下代码来实现:

  1. let test = {
  2.   canUndo: true,
  3.   name: "test",
  4.   execute: function (context, options, isUndo) {
  5.     var Commands = GC.Spread.Sheets.Commands;
  6.     if (isUndo) {
  7.       Commands.undoTransaction(context, options);
  8.       return true;
  9.     } else {
  10.       Commands.startTransaction(context, options);
  11.       let sheet = context.getSheetFromName(options.sheetName);
  12.       console.log(sheet.name());
  13.       Commands.endTransaction(context, options);
  14.       return true;
  15.     }
  16.   },
  17. };

  18. spread.commandManager().register("test", test);

  19. let oldOpenMenu = spread.contextMenu.onOpenMenu;
  20. spread.contextMenu.onOpenMenu = function (
  21.   menuData,
  22.   itemsDataForShown,
  23.   hitInfo,
  24.   spread
  25. ) {
  26.   oldOpenMenu.apply(this, arguments);

  27.   let test = {
  28.     command: "test",
  29.     disable: false,
  30.     name: "test",
  31.     needKeepFocus: true,
  32.     text: "测试...",
  33.   };

  34.   // 主要判断逻辑
  35.   let row = hitInfo.worksheetHitInfo.row;
  36.   let col = hitInfo.worksheetHitInfo.col;
  37.   if (row > 3 && col > 3) {
  38.     itemsDataForShown.push(test);
  39.   }
  40. };
复制代码
SpreadJS 17.0.8 | GcExcel 7.1.2 已发布~
回复 使用道具 举报
想念
中级会员   /  发表于:2024-4-28 17:37:35
板凳
Joestar.Xu 发表于 2024-4-28 17:14
您好,请参考以下代码来实现:

oldOpenMenu.apply(this, arguments);中arguments应该定义什么
回复 使用道具 举报
Joestar.XuSpreadJS 开发认证
超级版主   /  发表于:2024-4-28 17:49:14
地板
您好,您是说arguments的type吗?

这里的arguments指的是onOpenMenu这个函数的所有参数,直接定义为any即可。
SpreadJS 17.0.8 | GcExcel 7.1.2 已发布~
回复 使用道具 举报
想念
中级会员   /  发表于:2024-4-28 17:56:04
5#
Joestar.Xu 发表于 2024-4-28 17:49
您好,您是说arguments的type吗?

这里的arguments指的是onOpenMenu这个函数的所有参数,直接定义为any ...

好的,谢谢
回复 使用道具 举报
Joestar.XuSpreadJS 开发认证
超级版主   /  发表于:2024-4-28 17:58:05
6#
不客气,那就先结贴了,后续有其他问题的话随时开新帖提问哈。
SpreadJS 17.0.8 | GcExcel 7.1.2 已发布~
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 立即注册
返回顶部