找回密码
 立即注册

QQ登录

只需一步,快速开始

TY呀TY

中级会员

72

主题

193

帖子

647

积分

中级会员

积分
647
TY呀TY
中级会员   /  发表于:2023-6-2 14:31  /   查看:2102  /  回复:9
本帖最后由 Joestar.Xu 于 2023-6-5 10:42 编辑

不能重写插入活动单元格上移右移,删除单元格 右侧单元格左移,下方单元格上移, 这几个的command命令吗,我看GC.Spread.Sheets.Designer.CommandNames这个里面没有对应的枚举 image.png770355529.png image.png806398925.png image.png867216491.png

9 个回复

倒序浏览
Joestar.XuSpreadJS 开发认证
超级版主   /  发表于:2023-6-2 15:00:19
沙发
您好,您重写这几个command是为了实现什么样的需求呢?
回复 使用道具 举报
TY呀TY
中级会员   /  发表于:2023-6-2 15:39:20
板凳
Joestar.Xu 发表于 2023-6-2 15:00
您好,您重写这几个command是为了实现什么样的需求呢?

image.png839360656.png
回复 使用道具 举报
Joestar.XuSpreadJS 开发认证
超级版主   /  发表于:2023-6-2 16:39:49
地板
您好,这边调研了一下,目前没有办法去重写这几个Command。
回复 使用道具 举报
TY呀TY
中级会员   /  发表于:2023-6-2 20:08:37
5#
本帖最后由 TY呀TY 于 2023-6-2 20:10 编辑
Joestar.Xu 发表于 2023-6-2 16:39
您好,这边调研了一下,目前没有办法去重写这几个Command。

那有什么办法能够监听到执行这个操作之前,换种说法就是在执行这个command命令前根据自己的一些条件判断是否执行下去
回复 使用道具 举报
Joestar.XuSpreadJS 开发认证
超级版主   /  发表于:2023-6-5 09:38:58
6#
TY呀TY 发表于 2023-6-2 20:08
那有什么办法能够监听到执行这个操作之前,换种说法就是在执行这个command命令前根据自己的一些条件判断 ...

您好,能否请您结合一下实际业务详细说明一下您这个需求?比如说您是想在前五行不让用户执行插入和删除吗?我们这边根据您的具体需求再调研看看有没有其他的解决方案。
回复 使用道具 举报
TY呀TY
中级会员   /  发表于:2023-6-5 10:20:46
7#
本帖最后由 TY呀TY 于 2023-6-5 10:24 编辑
Joestar.Xu 发表于 2023-6-5 09:38
您好,能否请您结合一下实际业务详细说明一下您这个需求?比如说您是想在前五行不让用户执行插入和删除吗 ...

不是不让用户插入删除,是在某个情况下,当用户进行了删除单元格或增加单元格前需要进行一些判断,判断是否能够删除或增加,简单来说就是执行删除或增加之前进行监听,我需要在这个操作前进行自己的逻辑判断,就如同那些event事件中的cancel,设置这个属性就不能够执行,,比如一个场景就是,在删除前我需要挂起计算服务,删除成功后恢复计算
回复 使用道具 举报
Joestar.XuSpreadJS 开发认证
超级版主   /  发表于:2023-6-5 10:36:10
8#
TY呀TY 发表于 2023-6-5 10:20
不是不让用户插入删除,是在某个情况下,当用户进行了删除单元格或增加单元格前需要进行一些判断,判断是 ...

好的,我们这边调研一下,后续有进展我会在帖子下回复您。

本帖先做保留处理了。
回复 使用道具 举报
TY呀TY
中级会员   /  发表于:2023-6-5 17:28:56
9#
Joestar.Xu 发表于 2023-6-5 10:36
好的,我们这边调研一下,后续有进展我会在帖子下回复您。

本帖先做保留处理了。

能不能加急呢,因为只有删除单元格是不能够监听到的
回复 使用道具 举报
Joestar.XuSpreadJS 开发认证
超级版主   /  发表于:2023-6-5 17:46:20
10#
您好,请您参考一下以下代码看能否解决您的问题:

  1.   let newCommand = GC.Spread.Sheets.Designer.getCommand(
  2.     GC.Spread.Sheets.Designer.CommandNames.DeleteDialog
  3.   );
  4.   if (newCommand) {
  5.     let oldExecute = newCommand.execute;
  6.     newCommand.execute = function (context, propertyName, args) {
  7.       let activeSheet = context.getWorkbook().getActiveSheet();
  8.       if (activeSheet.getRowCount() < 10) {
  9.         alert("not allow");
  10.       } else {
  11.         oldExecute.call(this, context, propertyName, args);
  12.       }
  13.     };
  14.   }
  15.   designerConfig.commandMap = {};
  16.   designerConfig.commandMap[
  17.     GC.Spread.Sheets.Designer.CommandNames.DeleteDialog
  18.   ] = newCommand;

  19.   let newCommand2 = GC.Spread.Sheets.Designer.getCommand(
  20.     GC.Spread.Sheets.Designer.CommandNames.InsertDialog
  21.   );
  22.   if (newCommand2) {
  23.     let oldExecute = newCommand2.execute;
  24.     newCommand2.execute = function (context, propertyName, args) {
  25.       let activeSheet = context.getWorkbook().getActiveSheet();
  26.       if (activeSheet.getRowCount() > 10) {
  27.         alert("not allow");
  28.       } else {
  29.         oldExecute.call(this, context, propertyName, args);
  30.       }
  31.     };
  32.   }
  33.   designerConfig.commandMap = {};
  34.   designerConfig.commandMap[
  35.     GC.Spread.Sheets.Designer.CommandNames.InsertDialog
  36.   ] = newCommand2;
复制代码


DeleteDialog用于监听删除,InsertDialog用于监听插入。
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 立即注册
返回顶部