找回密码
 立即注册

QQ登录

只需一步,快速开始

13732977034

初级会员

39

主题

87

帖子

366

积分

初级会员

积分
366
13732977034
初级会员   /  发表于:2021-7-28 14:36  /   查看:1666  /  回复:3
spread js 14

问题描述:一个sheet上有多个按钮,通过 ButtonClicked 响应;
但是发现当有多个按钮的时候,只点击其中一个会触发多次ButtonClicked 事件,
例如:sheet上有3个button,点击一个,ButtonClicked 事件触发了3次
请问是什么原因

代码如下:
  1. function addDeleteBtn(sheet, row, col) {
  2.       let btn = new GC.Spread.Sheets.CellTypes.Button();
  3.       btn.text('删除')
  4.       sheet.setCellType(row, col, btn, GC.Spread.Sheets.SheetArea.viewport);
  5.     }


  6. // 事件响应
  7.         spread.bind(GC.Spread.Sheets.Events.ButtonClicked, function (e, info) {
  8.           console.log("删除:", info);
  9.           let sheet = info.sheet;
  10.           // sheet.deleteRows(info.row, 1)
  11.           var cellType = sheet.getCellType(info.row, info.col);
  12.           if (cellType instanceof GC.Spread.Sheets.CellTypes.Button) {
  13.               console.log("Button Clicked");
  14.           }
  15.         });
复制代码

image.png153176573.png

本来是要通过删除按钮来删除本行的,结果...

3 个回复

倒序浏览
Lynn.Dou讲师达人认证 悬赏达人认证 SpreadJS 开发认证
超级版主   /  发表于:2021-7-28 15:31:08
推荐
您提供一个能复现您描述问题的demo,这边在代码基础上调研下此问题。附件为demo模板,可以在模板中添加自己的代码并上传。

模板.zip

2.75 MB, 下载次数: 25

回复 使用道具 举报
Lynn.Dou讲师达人认证 悬赏达人认证 SpreadJS 开发认证
超级版主   /  发表于:2021-7-28 15:00:02
沙发

您好,
单击单元格中的按钮,复选框或超链接时都触发此事件,
所以需要根据您的需求在事件里面做判断。
请参考下方代码:

  1. spread.bind(GC.Spread.Sheets.Events.ButtonClicked, function (e, args) {
  2.     var sheet = args.sheet, row = args.row, col = args.col;
  3.     var cellType = sheet.getCellType(row, col);
  4.     if (cellType instanceof GC.Spread.Sheets.CellTypes.Button) {
  5.         alert("删除第" + (row+1) + "行");
  6.     }
  7. });
复制代码


回复 使用道具 举报
13732977034
初级会员   /  发表于:2021-7-28 15:12:20
板凳
本帖最后由 13732977034 于 2021-7-28 15:13 编辑
Lynn.Dou 发表于 2021-7-28 15:00
您好,
单击单元格中的按钮,复选框或超链接时都触发此事件,
所以需要根据您的需求在事件里面做判断。 ...

我是这样写的,但是点击一个 删除 按钮,还是会触发多次啊。本来是删除 被点击的删除按钮本行,结果把有删除按钮的行都删掉了
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 立即注册
返回顶部