找回密码
 立即注册

QQ登录

只需一步,快速开始

KevinChen 讲师达人认证 悬赏达人认证 SpreadJS 开发认证
论坛元老   /  发表于:2020-3-26 18:20  /   查看:3617  /  回复:0
背景:

最近遇到比较多这样的需求:
终端用户需要随机拖拽或选择一些条件,对应地钻取到一组数据,
然后按用户喜好,放置到Sheet表单中选中的位置上。
一个sheet中可能有很多块不同的数据区域,而且位置和范围取决于用户钻取的数据。

这个需求听起来好像不难,就是拿到数据、设置到sheet中即可。
但仔细分析,就会发现里面其实有一些潜在的陷阱,一不小心就会让开发工作变成一场灾难。

首先,SpreadJS针对在sheet表单的局部区域绑定list类型的数据给出的解决方案是表格绑定,
也就意味着需要在用户选择的地方先放一个table表格,再把数据绑定进来。
SpreadJS为了避免表格绑定执行时覆盖其它有效区域,
都是通过addRows的方式添加(或删除)行的方式来给进来的数据提供容器,
那么有个现实的问题,当不同的table处于同一行时,势必会相互影响。导致数据源被改动。

在SpreadJS中有一个resize方法,可以改变table的覆盖区域,
我们在拿到数据源时,可以先resize一下table的覆盖区域,再做数据绑定,就不会出现行冲突的情况。
示例代码如下:
  1. sheet.tables.resize(table, range1);
复制代码


完整的代码参考附件。

如果有小伙伴比较喜欢深究,仔细想想会发现,这个办法也不能完全解决问题。
那具体应该怎么办呢?可以参考我的公开课:《SpreadJS表单设计 —— 常见问题解析》
地址:https://gcdn.grapecity.com.cn/forum.php?mod=viewthread&tid=54505&extra=page%3D1%26filter%3Dtypeid%26typeid%3D274

06_多table冲突.zip

795.24 KB, 下载次数: 182

0 个回复

您需要登录后才可以回帖 登录 | 立即注册
返回顶部