找回密码
 立即注册

QQ登录

只需一步,快速开始

Derrick.Jiao 讲师达人认证 悬赏达人认证 SpreadJS 开发认证
论坛元老   /  发表于:2022-4-11 11:05  /   查看:2403  /  回复:0
    在一些实际的应用场景中,想要获取用户填报的内容,那这个应该如何获取呢?用户的场景是这样,在我们的设计器上完成模板的设计后(里面包含表格绑定以及单元格绑定),直接给到业务人员去填写,那想要填写完成后,将表格绑定以及单元格绑定的内容封装成一个对象返回。我们可以通过数据绑定来实现。我们的数据绑定功能不仅仅是可以用来把数据源进行展示,还可以设计一些空的模板进行填报,并且可以获得填报后的数据源。这样能够使得我们可以将模板与数据源分开进行存储。
    我们知道,数据绑定通过setDataSource设置数据源之后,因为是双向绑定的,因此,我在绑定的单元格上修改数据,那么我就可以通过getDataSouce去获取数据。注意,要想获取数据源,必须先setDataSource。像是表格绑定的bind方法是无法通过getDataSource获取的。
    实现思路也比较简单,首先是单元格绑定,在绑定的时候我们给一个空的对象数据源,然后再进行CellBindingSource转换后进行setDataSourcebang绑定即可。这个时候我们去填写,然后再获取getDataSouce就能拿到我们填写的内容。那对于表格绑定来说,我们的表单中,可能存在多个表格,那么应该如何获取呢?方法也很简单,我们只需遍历所有的表格的bindingPath,然后给一个空的对象数组即可,代码如下
  1. var len = sheet.tables.all().length;
  2.                         var tmp = {};
  3.                         for (var i = 0; i < len; i++){
  4.                                 var bp = sheet.tables.all()[i].bindingPath();
  5.                                 tmp[bp] = [{}];
  6.                         }
  7.                         var source = new GC.Spread.Sheets.Bindings.CellBindingSource(tmp);
  8.                         sheet.setDataSource(source);
复制代码


例如这是原始模板
image.png189642943.png

填报完成后,返回的结果封装成一个对象
image.png898214416.png

下载附件可以查看完整demo

bind.zip

10.73 KB, 下载次数: 218

0 个回复

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