找回密码
 立即注册

QQ登录

只需一步,快速开始

小一Capemi

注册会员

2

主题

7

帖子

21

积分

注册会员

积分
21
  • 65

    金币

  • 2

    主题

  • 7

    帖子

最新发帖
小一Capemi
注册会员   /  发表于:2022-8-19 14:06  /   查看:3001  /  回复:11
本帖最后由 小一Capemi 于 2022-8-23 11:35 编辑

想对特定单元格进行删除后,单元格内内容不被删除 与之前保持不变

11 个回复

倒序浏览
沉沉悬赏达人认证
金牌服务用户   /  发表于:2022-8-19 14:29:55
沙发
对特定单元格进行删除后,删除的是样式吗?还是希望用户的删除操作无效?
回复 使用道具 举报
小一Capemi
注册会员   /  发表于:2022-8-19 14:48:22
板凳
沉沉 发表于 2022-8-19 14:29
对特定单元格进行删除后,删除的是样式吗?还是希望用户的删除操作无效?

删除的是单元格内容,希望删除操作无效
回复 使用道具 举报
沉沉悬赏达人认证
金牌服务用户   /  发表于:2022-8-19 14:53:18
地板
本帖最后由 Lynn.Dou 于 2022-8-19 16:25 编辑

这里有一个教程是监听右键菜单清除事件和键盘delete事件:
https://gcdn.grapecity.com.cn/forum.php?mod=viewthread&tid=88811
SpreadJS禁用键盘Backspace键:
https://gcdn.grapecity.com.cn/fo ... 8&fromuid=59119

还可以参考这篇帖子,用户对下拉框组件进行delete操作后,监听到此事件,重新赋值。
https://gcdn.grapecity.com.cn/forum.php?mod=viewthread&tid=152154
回复 使用道具 举报
小一Capemi
注册会员   /  发表于:2022-8-19 17:34:00
5#
沉沉 发表于 2022-8-19 14:53
这里有一个教程是监听右键菜单清除事件和键盘delete事件:
https://gcdn.grapecity.com.cn/forum.php?mod= ...

您好 我已查看 但是没有找到可以使本次删除操作无效的方法
回复 使用道具 举报
Lynn.Dou讲师达人认证 悬赏达人认证 SpreadJS 开发认证
超级版主   /  发表于:2022-8-19 18:21:52
6#
您是如何进行删除的呢?通过右键菜单还是键盘按键呢?
请详细描述下您的需求,这样才能进一步调研相应的解决方案。
回复 使用道具 举报
小一Capemi
注册会员   /  发表于:2022-8-19 18:38:45
7#
Lynn.Dou 发表于 2022-8-19 18:21
您是如何进行删除的呢?通过右键菜单还是键盘按键呢?
请详细描述下您的需求,这样才能进一步调研相应的解 ...

选中单元格 使用delete按键进行删除 期望本次删除事件不产生效果
回复 使用道具 举报
Lynn.Dou讲师达人认证 悬赏达人认证 SpreadJS 开发认证
超级版主   /  发表于:2022-8-22 11:00:44
8#
参考下方代码,禁用del键:
spread.commandManager().setShortcutKey(null, GC.Spread.Commands.Key.del, false, false, false, false);
API:https://demo.grapecity.com.cn/sp ... html#setShortcutKey
如果想要在指定条件下,才禁用del键,可以参考下方链接文章,重新注册命令,并绑定至del键。
https://gcdn.grapecity.com.cn/fo ... 8&fromuid=59119
回复 使用道具 举报
小一Capemi
注册会员   /  发表于:2022-8-22 18:38:10
9#
Lynn.Dou 发表于 2022-8-22 11:00
参考下方代码,禁用del键:
spread.commandManager().setShortcutKey(null, GC.Spread.Commands.Key.del,  ...

非常感谢
现在是在选中特定的列以后,会把删除按钮禁用掉,但是希望在选中其它列时能够重新启用删除按钮。
sheet.bind(GC.Spread.Sheets.Events.SelectionChanging, (e: any, args: any) => {
      const { col, colCount } = args.newSelections[0]
      const command = {
        canUndo: false,
        execute: function (context:GC.Spread.Sheets.Workbook, options:any, isUndo:any) {
          const Commands = GC.Spread.Sheets.Commands
          if (isUndo) {
            Commands.undoTransaction(context, options)
            return true
          } else {
            Commands.startTransaction(context, options)

            Commands.endTransaction(context, options)
            return true
          }
        }
      }

      if (col + colCount > 38 && col <= 38) {
        spread?.commandManager().register('ban', command)
        spread?.commandManager().setShortcutKey('ban', GC.Spread.Commands.Key.backspace, false, false, false, false)
        spread?.commandManager().setShortcutKey(null, GC.Spread.Commands.Key.del, false, false, false, false)
      }
    })
回复 使用道具 举报
Lynn.Dou讲师达人认证 悬赏达人认证 SpreadJS 开发认证
超级版主   /  发表于:2022-8-23 10:33:55
10#
您已经自定义了command,在命令内部您可以对列进行判断。
如果是想禁用删除的列,则return true;
如果是不想禁用删除的列,则return false。然后对del键、backspace键绑定该命令。
示例代码如下:
  1. var command = {
  2.                 canUndo: false,
  3.                 execute: function (context, options, isUndo) {
  4.                     var Commands = GC.Spread.Sheets.Commands;
  5.                     if (isUndo) {
  6.                         Commands.undoTransaction(context, options);
  7.                         return true;
  8.                     } else {
  9.                         Commands.startTransaction(context, options);
  10.                         // 第一列禁止删除
  11.                         if (context.getActiveSheet().getActiveColumnIndex() != 0) {
  12.                             return false
  13.                         }

  14.                         Commands.endTransaction(context, options);
  15.                         alert("第一列禁止删除")
  16.                         return true;
  17.                     }
  18.                 }
  19.             };

  20.             spread.commandManager().register("ban1", command);
  21.             spread.commandManager().register("ban2", command);

  22.             spread.commandManager().setShortcutKey("ban1", GC.Spread.Commands.Key.del, false, false, false, false);
  23.             spread.commandManager().setShortcutKey("ban2", GC.Spread.Commands.Key.backspace, false, false, false, false);
复制代码



回复 使用道具 举报
12下一页
您需要登录后才可以回帖 登录 | 立即注册
返回顶部