找回密码
 立即注册

QQ登录

只需一步,快速开始

hano7758

注册会员

11

主题

22

帖子

87

积分

注册会员

积分
87
hano7758
注册会员   /  发表于:2020-9-24 09:45  /   查看:3073  /  回复:2
请问有没有sheet懒加载或延迟加载的功能或demo?
比如目前有spread初始化中有20多个sheet,每个sheet中的数据都需要从不同数据库表中获取,这样就会有20次的请求。
想在spreadInit的时候只是把20多个sheet addSheet中,然后用户点了哪个sheet再通过那个点击的sheet逻辑判断去加载sheet对应的数据

2 个回复

倒序浏览
nobt
论坛元老   /  发表于:2020-9-24 10:03:39
沙发
设置数据的方法是setDataSource本来就是基于sheet对象的
  1. var activeSheet = spread.getActiveSheet();

  2. var people = [
  3.     {name: "Albert", isAdult: false, country: "American", website: "albert.com"},
  4.     {name: "Alice", isAdult: true, country: "China", website: "alice.com"},
  5.     {name: "Bob", isAdult: false, country: "Canada", website: "bob.com"}
  6. ];

  7. activeSheet.setDataSource(people);
复制代码


看你的意思就是点击哪个sheet页就去请求对应的数据组装好,再调用activeSheet.setDataSource就可以了
1、初始加载表格是默认就不要循环所有的sheet页去setDataSource了,可以做一个初始化动作:每一次都默认让它激活第一个sheet页,这样对应初始的时候只从后端拿第一个sheet页的数据源数据
2、配合切换sheet事件的监听进行你说的不同sheet页发起数据请求
  1. spread.bind(GC.Spread.Sheets.Events.ActiveSheetChanged, function (sender, args) {
  2.     console.log("Active sheet has been switched.");
  3. });
复制代码

评分

参与人数 1金币 +1000 收起 理由
Clark.Pan + 1000 很给力!

查看全部评分

回复 使用道具 举报
Clark.Pan讲师达人认证 悬赏达人认证 SpreadJS 开发认证
超级版主   /  发表于:2020-9-24 10:16:07
板凳
楼上说的很有道理,如果用数据绑定的话就是楼上的方式。
另外其实您之前的设计也是可以优化的,您说的每个sheet中的数据都需要从不同数据库表中获取,这样就会有20次的请求。其实可以通过一个请求先把20个sheet中的数据都请求过来,然后根据您切换对应的sheet(ActiveSheetChanged)来加载对应sheet的数据,这样只用一个请求,在切换sheet的时也不会发送新的请求了。缺点是一次请求的数据会非常大,这个您可以根据您具体的业务来进行取舍。
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 立即注册
返回顶部