找回密码
 立即注册

QQ登录

只需一步,快速开始

曹金俊
金牌服务用户   /  发表于:2019-3-22 10:55  /   查看:3129  /  回复:4
1:如何实现ctrl+a
2:如实现ctrl+d 即复制上一行
不胜感激

4 个回复

倒序浏览
KevinChen讲师达人认证 悬赏达人认证 SpreadJS 开发认证
论坛元老   /  发表于:2019-3-22 14:52:07
沙发
本帖最后由 KevinChen 于 2019-3-22 14:53 编辑

您好,SpreadJS中绑定快捷键的接口是:setShortcutKey()
参考API:

https://demo.grapecity.com.cn/sp ... setShortcutKey.html

这个方法接受的参数是命令,因此需要自定义一个命令:
参考技术博客:

https://www.grapecity.com.cn/blogs/how-to-use-spreadjs-built-in-commands-and-custom-commands

自定义命令的示例代码:

  1. spread.commandManager().register("fillNow",
  2. {
  3.     canUndo: true,
  4.     execute: function (context, options, isUndo) {
  5.         var Commands = GC.Spread.Sheets.Commands;
  6.         // 在此加cmd名称
  7.         options.cmd = "fillNow";
  8.         if (isUndo) {
  9.             // isUndo 为true时,调用undoTransaction
  10.             Commands.undoTransaction(context, options);
  11.             return true;
  12.         } else {
  13.             // 开始事务
  14.             Commands.startTransaction(context, options);
  15.             var sheet = spread.getActiveSheet();
  16.             var ranges = sheet.getSelections();
  17.             if (ranges.length > 0) {
  18.                 var range = ranges[0];
  19.                 var cell = sheet.getCell(range.row, range.col);
  20.                 if (!cell.locked()) {
  21.                     sheet.setValue(range.row, range.col, new Date());
  22.                 }
  23.             }
  24.             // 结束事务
  25.             Commands.endTransaction(context, options);
  26.             return true;
  27.         }
  28. }
  29. });
复制代码


另外,选择全部单元格的代码示例如下:

  1. // 先清空选择区域
  2. sheet.clearSelection();
  3. // 选中所有区域
  4. sheet.addSelection(0,0,sheet.getRowCount(), sheet.getColumnCount());
复制代码


复制上一行请参考copyTo:

https://demo.grapecity.com.cn/sp ... rksheet~copyTo.html
回复 使用道具 举报
曹金俊
金牌服务用户   /  发表于:2019-3-25 14:14:51
板凳
KevinChen 发表于 2019-3-22 14:52
您好,SpreadJS中绑定快捷键的接口是:setShortcutKey()
参考API:

感谢  我已经实现了我想要的效果 但是有个问题  就是我扩展的命令 无法通过ctrol+z撤销  比如我通过命令改变了单元格值了 然后我想撤销  无法撤销 ,手动修改值后可以撤销到原来的值
回复 使用道具 举报
曹金俊
金牌服务用户   /  发表于:2019-3-25 14:27:19
地板
曹金俊 发表于 2019-3-25 14:14
感谢  我已经实现了我想要的效果 但是有个问题  就是我扩展的命令 无法通过ctrol+z撤销  比如我通过命令 ...

已经找到了相应的方法了 加上这个就好了  spreadAll.options.allowUndo = true;  顺便给下ctrol+d的代码
  1. function ctrold() {
  2.     // 设置允许撤销操作
  3.     spreadAll.options.allowUndo = true;
  4.     spreadAll.commandManager().register("ctrol+d",
  5.         {
  6.             canUndo: true,
  7.             execute: function (context, options, isUndo) {
  8.                 var Commands = GC.Spread.Sheets.Commands;
  9.                 // 在此加cmd名称
  10.                 options.cmd = "ctrol+d";
  11.                 if (isUndo) { Commands.undoTransaction(context, options);
  12.                     return true; }else{
  13.                 alert("ctrol+d");


  14.                 // 开始事务
  15.                 Commands.startTransaction(context, options);
  16.                 var sheet = spreadAll.getActiveSheet();
  17.                 var selects = sheet.getSelections()[0];
  18.                 if(selects.rowCount==1){

  19.                     sheet.copyTo(selects.row-1,selects.col,selects.row,selects.col,selects.rowCount,selects.colCount,GC.Spread.Sheets.CopyToOptions.value);
  20.                 }else if(selects.rowCount>1){

  21.                     for(var i = 0;i<selects.rowCount;i++){
  22.                             sheet.copyTo(selects.row,selects.col,selects.row+i,selects.col,1,selects.colCount,GC.Spread.Sheets.CopyToOptions.value);


  23.                     }
  24.                 }
  25.                 // 结束事务
  26.                 Commands.endTransaction(context, options);
  27.                 return true;
  28.                 }

  29.             }
  30.         });
  31.     spreadAll.commandManager().setShortcutKey(
  32.         "ctrol+d", 68, true, false, false, false
  33.     );
  34. }
复制代码
回复 使用道具 举报
KevinChen讲师达人认证 悬赏达人认证 SpreadJS 开发认证
论坛元老   /  发表于:2019-3-25 14:57:32
5#
好的,感谢反馈,能解决问题就好,本帖我结贴了,有新的问题欢迎发新帖交流~
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 立即注册
返回顶部