找回密码
 立即注册

QQ登录

只需一步,快速开始

TY呀TY

中级会员

71

主题

192

帖子

641

积分

中级会员

积分
641
TY呀TY
中级会员   /  发表于:2023-6-8 15:54  /   查看:1105  /  回复:1
本帖最后由 TY呀TY 于 2023-6-8 16:05 编辑

image.png422157592.png GC.Spread.Sheets.Events.TableRowsChanged这个监听事件是不能够进行cancel的方式阻止继续执行,所以还有什么别的办法能够在执行之前能够插入自己的判断逻辑判断是否能够继续执行,比如重写这个右键菜单的执行命令

1 个回复

倒序浏览
Joestar.XuSpreadJS 开发认证
超级版主   /  发表于:2023-6-8 17:12:13
沙发
您好,可以通过重写右键菜单的方式来实现您这个需求。

请参考以下代码:

  1.   let oldOpenMenu = spread.contextMenu.onOpenMenu;
  2.   spread.contextMenu.onOpenMenu = function (
  3.     menuData,
  4.     itemsDataForShown,
  5.     hitInfo,
  6.     spread
  7.   ) {
  8.     oldOpenMenu.apply(this, arguments);
  9.     for (const element of itemsDataForShown) {
  10.       console.log(hitInfo);
  11.       console.log(itemsDataForShown);
  12.       let item = element;
  13.       if (
  14.         item.name === "tableInsert"
  15.       ) {
  16.         // 禁止在第二行向上添加行
  17.         if (hitInfo.worksheetHitInfo.row == 1) {
  18.           if (item.name == "tableInsert") {
  19.             let subMenu = item.subMenu;
  20.             for (let i = 0; i < subMenu.length; i++) {
  21.               if (subMenu[i].name === "tableInsertRowsAboveForContextMenu") {
  22.                 subMenu[i].disable = true;
  23.               }
  24.             }
  25.             return;
  26.           }
  27.           item.disable = true;
  28.         }
  29.       }
  30.     }
  31.   };
复制代码


实现效果如下:

image.png464847716.png
SpreadJS 17.0.9 | GcExcel 7.1.2 已发布~
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 立即注册
返回顶部