找回密码
 立即注册

QQ登录

只需一步,快速开始

一线轨迹
注册会员   /  发表于:2023-5-6 16:23  /   查看:2246  /  回复:2
10金币

我想重写右键【筛选】菜单的事件

右键菜单中对应的事件是:

gc.spread.contextMenu.filter



尝试获取这个command,得到


{    "text": "${res.contextMenu.filter}",    "commandName": "gc.spread.contextMenu.filter",    "visibleContext": "!PivotTableSelected && ClickViewport || ClickCorner",    "enableContext": "AllowFilter"}


上面没有 execute。


给 command 加上 execute 方法,也不会触发。


有两个问题:
1. 如何获取到实际执行的方法?
2. 如何让command响应execute?

最佳答案

查看完整内容

您好,请参考以下代码尝试一下: let designerConfig = JSON.parse( JSON.stringify(GC.Spread.Sheets.Designer.DefaultConfig) ); designerConfig.contextMenu[45] = "gc.spread.contextMenu.filter1"; let newCommand = GC.Spread.Sheets.Designer.getCommand( GC.Spread.Sheets.Designer.CommandNames.Filter ); console.log(newCommand); if (newCommand) { newCommand.commandName = " ...

2 个回复

倒序浏览
最佳答案
最佳答案
JoestarXu
超级版主   /  发表于:2023-5-6 16:23:52
来自 3#
您好,请参考以下代码尝试一下:

  let designerConfig = JSON.parse(
    JSON.stringify(GC.Spread.Sheets.Designer.DefaultConfig)
  );
  designerConfig.contextMenu[45] = "gc.spread.contextMenu.filter1";
  let newCommand = GC.Spread.Sheets.Designer.getCommand(
    GC.Spread.Sheets.Designer.CommandNames.Filter
  );
  console.log(newCommand);
  if (newCommand) {
    newCommand.commandName = "gc.spread.contextMenu.filter1";

    newCommand.execute = function (context, propertyName, args) {
      console.log("filter");

      var spread = context.getWorkbook();
      spread.commandManager().execute({
        cmd: "gc.spread.contextMenu.filter",
        activeCol: args.activeCol,
        activeRow: args.activeRow,
        commandOptions: args.commandOptions,
        itemName: "gc.spread.contextMenu.filter",
        selections: args.selections,
        sheetName: args.sheetName,
        tableName: args.tableName,
      });
      spread.getActiveSheet().repaint();
    };
  }
  designerConfig.commandMap = {};
  designerConfig.commandMap["gc.spread.contextMenu.filter1"] = newCommand;

  let designer = new GC.Spread.Sheets.Designer.Designer(
    "gc-designer-container",
    designerConfig
  );
回复 使用道具 举报
Lynn.Dou讲师达人认证 悬赏达人认证 SpreadJS 开发认证
超级版主   /  发表于:2023-5-6 19:14:46
2#
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 立即注册
返回顶部