找回密码
 立即注册

QQ登录

只需一步,快速开始

Joestar.Xu SpreadJS 开发认证
超级版主   /  发表于:2024-4-7 15:48  /   查看:1292  /  回复:0
本帖最后由 Joestar.Xu 于 2024-5-15 17:24 编辑

在使用SpreadJS的过程中我们会需要再某一行的样式的基础上再插入一样的一行,但是直接插入并不会保留样式,这样的需求应该如何实现呢?


只需要重写一下插入行的命令即可实现,参考以下代码:

  1. window.onload = function () {
  2.   let designerConfig = JSON.parse(
  3.     JSON.stringify(GC.Spread.Sheets.Designer.DefaultConfig)
  4.   );

  5.   let designer = new GC.Spread.Sheets.Designer.Designer(
  6.     "gc-designer-container",
  7.     designerConfig
  8.   );

  9.   let spread = designer.getWorkbook();

  10.   let sheet = spread.getActiveSheet();

  11.   let insertRowsCopyStyle = {
  12.     canUndo: true,
  13.     name: "insertRowsCopyStyle",
  14.     execute: function (context, options, isUndo) {
  15.       var Commands = GC.Spread.Sheets.Commands;
  16.       if (isUndo) {
  17.         Commands.undoTransaction(context, options);
  18.         return true;
  19.       } else {
  20.         Commands.startTransaction(context, options);
  21.         let sheet = context.getSheetFromName(options.sheetName);

  22.         options.cmd = "gc.spread.contextMenu.insertRows";
  23.         context.commandManager().execute(options);

  24.         options.cmd = "insertRowsCopyStyle";
  25.         sheet.copyTo(
  26.           sheet.getActiveRowIndex() + 1,
  27.           0,
  28.           sheet.getActiveRowIndex(),
  29.           0,
  30.           1,
  31.           sheet.getColumnCount(),
  32.           GC.Spread.Sheets.CopyToOptions.style,
  33.         )
  34.         Commands.endTransaction(context, options);
  35.         return true;
  36.       }
  37.     },
  38.   };

  39.   spread.commandManager().register("insertRowsCopyStyle", insertRowsCopyStyle);

  40.   spread.contextMenu.menuData.forEach(item => {
  41.       if (item.name === "gc.spread.insertRows") {
  42.           item.command = "insertRowsCopyStyle"
  43.       }
  44.   })
复制代码

0 个回复

您需要登录后才可以回帖 登录 | 立即注册
返回顶部