找回密码
 立即注册

QQ登录

只需一步,快速开始

卑微的打工狗
金牌服务用户   /  发表于:2023-6-2 14:54  /   查看:1002  /  回复:3
看到之前有回答过这个问题,可根据   https://demo.grapecity.com.cn/spreadjs/SpreadJSTutorial/features/worksheet/context-menu/extend-context-menu/purejs 方法实现 增加或者删除自定义菜单数据,但是还是没有看懂
请问有什么成熟的demo可以实现右键清除按钮之后的回调吗?

3 个回复

倒序浏览
Joestar.XuSpreadJS 开发认证
超级版主   /  发表于:2023-6-2 17:33:54
沙发
您好,请参考一下代码重写clearContents命令:

  1.   let designerConfig = JSON.parse(
  2.     JSON.stringify(GC.Spread.Sheets.Designer.DefaultConfig)
  3.   );

  4.   designerConfig.contextMenu[29] = "gc.spread.contextMenu.clearContents1";
  5.   let newCommand = GC.Spread.Sheets.Designer.getCommand(
  6.     GC.Spread.Sheets.Designer.CommandNames.ClearContents
  7.   );
  8.   console.log(newCommand);
  9.   if (newCommand) {
  10.     newCommand.commandName = "gc.spread.contextMenu.clearContents1";

  11.     newCommand.execute = function (context, propertyName, args) {
  12.       console.log("clearContents");
  13.       // do something
  14.       var spread = context.getWorkbook();
  15.       spread.commandManager().execute({
  16.         cmd: "gc.spread.contextMenu.clearContents",
  17.         activeCol: args.activeCol,
  18.         activeRow: args.activeRow,
  19.         commandOptions: args.commandOptions,
  20.         itemName: "gc.spread.contextMenu.clearContents",
  21.         selections: args.selections,
  22.         sheetName: args.sheetName,
  23.         tableName: args.tableName,
  24.       });
  25.       // do something
  26.       spread.getActiveSheet().repaint();
  27.     };
  28.   }
  29.   designerConfig.commandMap = {};
  30.   designerConfig.commandMap["gc.spread.contextMenu.clearContents1"] =
  31.     newCommand;

  32.   let designer = new GC.Spread.Sheets.Designer.Designer(
  33.     "gc-designer-container",
  34.     designerConfig
  35.   );
复制代码
回复 使用道具 举报
卑微的打工狗
金牌服务用户   /  发表于:2023-6-6 09:16:16
板凳
Joestar.Xu 发表于 2023-6-2 17:33
您好,请参考一下代码重写clearContents命令:

我复制了以上方法,单元格右键单击之后,点击清除内容,并没有发生任何变化
回复 使用道具 举报
Joestar.XuSpreadJS 开发认证
超级版主   /  发表于:2023-6-6 09:38:37
地板
您好,这段代码就是重写了原有的clearContent的命令,可以让您在原有的clearContent之前和之后做一些操作。

  1. if (newCommand) {
  2.     newCommand.commandName = "gc.spread.contextMenu.clearContents1";

  3.     newCommand.execute = function (context, propertyName, args) {
  4.       console.log("startClearContents");
  5.       // do something
  6.       var spread = context.getWorkbook();
  7.       spread.commandManager().execute({
  8.         cmd: "gc.spread.contextMenu.clearContents",
  9.         activeCol: args.activeCol,
  10.         activeRow: args.activeRow,
  11.         commandOptions: args.commandOptions,
  12.         itemName: "gc.spread.contextMenu.clearContents",
  13.         selections: args.selections,
  14.         sheetName: args.sheetName,
  15.         tableName: args.tableName,
  16.       });
  17.       console.log("endClearContents");
  18.       // do something
  19.       spread.getActiveSheet().repaint();
  20.     };
  21.   }
复制代码


image.png896099548.png
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 立即注册
返回顶部