找回密码
 立即注册

QQ登录

只需一步,快速开始

鸳鸯配2024

金牌服务用户

30

主题

163

帖子

413

积分

金牌服务用户

积分
413
鸳鸯配2024
金牌服务用户   /  发表于:2024-8-6 16:17  /   查看:818  /  回复:3


  1. config.commandMap = {
  2.             fontFamily:fontFamilyCmd,
  3.             "insertMuticols": {
  4.                 text: "左侧添加列",
  5.                 commandName: "insertMuticols",
  6.             },
  7.             "insertMutiRowsDown": {
  8.                 text: "下方添加行",
  9.                 commandName: "insertMutiRowsDown",
  10.             },
复制代码


  1. let insertMuticolsLeft = {
  2.             canUndo: true,
  3.             canExcute: function () {
  4.                 console.log(arguments)
  5.             },
  6.             execute: function (spread, options, isUndo) {
  7.                 var Commands = GC.Spread.Sheets.Commands;
  8.                 console.log(options, '--options--')
  9.                 if (isUndo) {
  10.                     Commands.undoTransaction(spread, options);
  11.                     return true;
  12.                 } else {
  13.                     Commands.startTransaction(spread, options);
  14.                     if (options.commandOptions) {
  15.                         console.log(options, '---在左侧插入列++++' + options.commandOptions);
  16.                         var sheet = spread.getSheetFromName(options.sheetName);
  17.                         sheet.suspendPaint();
  18.                         sheet.addColumn(options.activeCol + 1, parseInt(options.commandOptions));
  19.                         sheet.resumePaint();
  20.                     }
  21.                     Commands.endTransaction(spread, options);
  22.                     return true;
  23.                 }
  24.             }
  25.         };

  26.         let insertRowsByCountsDown = {
  27.             canUndo: true,
  28.             canExcute: function () {
  29.                 console.log(arguments)
  30.             },
  31.             execute: function (spread, options, isUndo) {
  32.                 var Commands = GC.Spread.Sheets.Commands;
  33.                 console.log(options, '--options--')
  34.                 if (isUndo) {
  35.                     Commands.undoTransaction(spread, options);
  36.                     return true;
  37.                 } else {
  38.                     Commands.startTransaction(spread, options);
  39.                     if (options.commandOptions) {
  40.                         console.log(options, '---在下方插入++++' + options.commandOptions);
  41.                         var sheet = spread.getSheetFromName(options.sheetName);
  42.                         sheet.suspendPaint();
  43.                         sheet.addRows(options.activeRow + 1, parseInt(options.commandOptions));
  44.                         sheet.resumePaint();
  45.                     }
  46.                     Commands.endTransaction(spread, options);
  47.                     return true;
  48.                 }
  49.             }
  50.         };
复制代码

  1. var commandManager = spread.commandManager();
  2.         commandManager.register("insertRowAndCopyContent", insertRowAndCopyContent);
  3.         commandManager.register("insertMutiRows", insertRowsByCounts, null, false, false, false, false);
  4.         commandManager.register("insertMutiRowsDown", insertRowsByCountsDown, null, false, false, false, false);
  5.         commandManager.register("insertMuticols", insertMuticolsLeft, null, false, false, false, false);
  6.         //
  7.         // 获取旧的菜单
  8.         var oldCreateMenuItemElement = spread.contextMenu.menuView.createMenuItemElement;
  9.         spread.contextMenu.menuView.createMenuItemElement = function (menuItemData) {
  10.             var self = this;
  11.             var menuItemView = oldCreateMenuItemElement.call(self, menuItemData);
  12.             if (menuItemData.name === "insertMutiRows" || menuItemData.name === "insertMutiRowsDown" || menuItemData.name === "insertMuticols") {
  13.                 var supMenuItemContainer = menuItemView[0];
  14.                 var inputBlock = createInput(menuItemData.name);
  15.                 // var inputBlock = createInput();
  16.                 // var btnupBlock = createBtn();
  17.                 supMenuItemContainer.appendChild(inputBlock);
  18.                 // supMenuItemContainer.appendChild(btnupBlock);
  19.             }
  20.             return menuItemView;
  21.         }

  22.         var oldgetCommandOptions = spread.contextMenu.menuView.getCommandOptions;
  23.         spread.contextMenu.menuView.getCommandOptions = function (menuItemData, host, event) {
  24.             console.log(menuItemData.name, '--menuItemData.name--')
  25.             if (menuItemData && menuItemData.name === "insertMutiRows") {
  26.                 var ele = document.getElementsByClassName("inputBlockinsertMutiRows")[0]
  27.                 return ele.value;
  28.             } else  if (menuItemData && menuItemData.name === "insertMuticols") {
  29.                 var ele = document.getElementsByClassName("inputBlockinsertMuticols")[0]
  30.                 return ele.value;
  31.             }else  if (menuItemData && menuItemData.name === "insertMutiRowsDown") {
  32.                 var ele = document.getElementsByClassName("inputBlockinsertMutiRowsDown")[0]
  33.                 return ele.value;
  34.             } else {
  35.                 return oldgetCommandOptions.apply(this, arguments)
  36.             }
  37.         };
复制代码

  1. function createInput(className) {
  2.             var inputBlock = document.createElement('input');
  3.             inputBlock.type = 'text';
  4.             inputBlock.value = '1';
  5.             inputBlock.className = 'inputBlock' + className;
  6.             // inputBlock.className = 'inputBlock';
  7.             inputBlock.style = 'width: 20px;';
  8.             inputBlock.setAttribute('gcUIElement', 'gcContextMenu');
  9.             inputBlock.onclick = function (ev) {
  10.                 if (ev.target) {
  11.                     ev.stopPropagation()
  12.                 }
  13.             }
  14.             return inputBlock;
  15.         }
复制代码



添加行是生效的,但是新增列是不生效的。 insertMuticolsLeft  这是新增列的方法



3 个回复

倒序浏览
Wilson.Zhang
超级版主   /  发表于:2024-8-6 17:01:04
沙发
您好!以您提供的代码为基础,实现了左侧添加指定数量列的需求,请参考附件中的demo。

右键菜单新增列(Designer版本).zip

2.24 KB, 下载次数: 80

回复 使用道具 举报
鸳鸯配2024
金牌服务用户   /  发表于:2024-8-7 11:11:31
板凳
Wilson.Zhang 发表于 2024-8-6 17:01
您好!以您提供的代码为基础,实现了左侧添加指定数量列的需求,请参考附件中的demo。

好的,已经可以了,谢谢。
回复 使用道具 举报
Wilson.Zhang
超级版主   /  发表于:2024-8-7 13:33:17
地板
鸳鸯配2024 发表于 2024-8-7 11:11
好的,已经可以了,谢谢。

不客气!那就结贴了,看到您又发了新帖,这就去看看详情。
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 立即注册
返回顶部