Derrick.Jiao 发表于 2022-4-11 11:05:25

如何在填报场景中使用数据绑定获取数据源

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

例如这是原始模板


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


下载附件可以查看完整demo
页: [1]
查看完整版本: 如何在填报场景中使用数据绑定获取数据源