请选择 进入手机版 | 继续访问电脑版
 找回密码
 立即注册

QQ登录

只需一步,快速开始

Dtttax

银牌会员

276

主题

683

帖子

2197

积分

银牌会员

积分
2197
Dtttax
银牌会员   /  发表于:2019-1-29 15:08  /   查看:3527  /  回复:1
比如某个单元格的值改变后,被公式用到的那个单元格,还有比如跨sheet某个单元格用到了此单元格。想监听到这几个单元格能否用ValueChanged事件,目前发现只有编辑的那个单元格能捕获到

1 个回复

倒序浏览
KevinChen讲师达人认证 悬赏达人认证 SpreadJS 开发认证
论坛元老   /  发表于:2019-1-29 17:32:23
沙发
您好,设置了公式的单元格,当值发生改变时,没有事件能够捕获值的改变。

但是可以使用脏数据的方法来获取改变的值,示例代码如下:

  1. var spread = GC.Spread.Sheets.findControl("ss");
  2. spread.addSheet(1, new GC.Spread.Sheets.Worksheet("Sheet2"));

  3. var sheet = spread.getActiveSheet();
  4. var sheet2 = spread.getSheetFromName("Sheet2");

  5. sheet.setFormula(0,0,"=D1+E1");
  6. sheet2.setFormula(0,0,"=Sheet1!A1");

  7. sheet.clearPendingChanges();
  8. sheet2.clearPendingChanges();

  9. spread.bind(GC.Spread.Sheets.Events.ValueChanged, function (s, e) {
  10.     var col = e.col;
  11.     var row = e.row;
  12.     var oldValue = e.oldValue;
  13.     var newValue = e.newValue;

  14.     setTimeout(function(){
  15.         var sheet1Dirty = sheet.getDirtyCells();
  16.         var sheet2Dirty = sheet2.getDirtyCells();

  17.         console.log("当前改变的值:行" + row + " 列" + col + " 值改为:" + newValue);
  18.         console.log(sheet.name() + " 脏数据单元格:");
  19.         console.log(sheet1Dirty);
  20.         console.log(sheet2.name() + " 脏数据单元格:");
  21.         console.log(sheet2Dirty);
  22.         
  23.         sheet.clearPendingChanges();
  24.         sheet2.clearPendingChanges();
  25.     },100);

  26. });
复制代码


这段测试代码是在学习指南的示例上跑的:

https://demo.grapecity.com.cn/Sp ... itializeSpread.html
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 立即注册
返回顶部