找回密码
 立即注册

QQ登录

只需一步,快速开始

super825

初级会员

11

主题

33

帖子

271

积分

初级会员

积分
271

微信认证勋章

QQ
super825
初级会员   /  发表于:2017-8-31 23:15  /   查看:3257  /  回复:5
本帖最后由 super825 于 2017-8-31 23:17 编辑

问题:有两个spread表格,表格一:单元格点击,要刷新表格二;结束编辑也要刷新表格二
当初始化时,如果是这样写的:
var spread = new ns.Workbook($("#" +id)[0], {count:0});
var sheet = new ns.Worksheet('sheet');
spread.addSheet(0, sheet);

表格二刷新时会触发表格一的editEnd事件
我的理解是两个不同的表格,那么事件应该是分开的,刷新表格二,不应该触发表格一的事件。
详见附件代码,
用addSheet是因为性能较好

如果我攺成如下代码则不会
var spread = new ns.Workbook($("#" +id)[0]);
var sheet = spread.getSheet(0);


addSheet触发editEnd事件.rar

2.22 MB, 下载次数: 100

5 个回复

倒序浏览
dexteryao讲师达人认证 悬赏达人认证 SpreadJS 开发认证
超级版主   /  发表于:2017-9-1 11:58:55
沙发
您这个页面有个问题是spread多次重复初始化,不是特别了解您的业务,您需要梳理下业务流程。
不要在事件里面去初始化spread对象,或者需要根据状态去初始化
回复 使用道具 举报
super825
初级会员   /  发表于:2017-9-5 08:02:42
板凳
项目需求是有三个表格,表格一单击切换行时,要联动表格二、表格三刷新,其实只是刷新行数据,如果要避免连续new spread,有没有好的方法,columns、options都没有变,就是data(行数据)变了,有没有更简单高效的方法
回复 使用道具 举报
dexteryao讲师达人认证 悬赏达人认证 SpreadJS 开发认证
超级版主   /  发表于:2017-9-5 10:37:06
地板
如果只是刷新数据,那么您最开始将三个表格同时初始化好,然后再事件里面去刷新其他worksheet的数据源即可。

  1.             sheet.bind(ns.Events.EditEnd, function(e, args) {
  2.                 console.log(id + " EditEnd");
  3.                 if(id === "ss"){
  4.                     //initGrid("ss1");
  5.                     var spread1 = GC.Spread.Sheets.findControl(document.getElementById("ss1"))
  6.                     var sheet1_1 = spread1.getActiveSheet()
  7.                     sheet1_1.setDataSource([{
  8.                         partNumber: '0231520311',
  9.                         country: 'American11'
  10.                     }]);
  11.                 }
  12.             });
复制代码
回复 使用道具 举报
super825
初级会员   /  发表于:2017-9-7 11:31:10
5#
如果列也刷新呢
回复 使用道具 举报
Clark.Pan讲师达人认证 悬赏达人认证 SpreadJS 开发认证
超级版主   /  发表于:2017-9-7 15:36:07
6#
super825 发表于 2017-9-7 11:31
如果列也刷新呢

您好,您重新bindColumns就可以实现了
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 立即注册
返回顶部