Derrick.Jiao 发表于 2022-5-27 10:25:36

表格绑定中插入列并更新对应的数据透视表

背景:有的朋友有这样一个场景,他们的数据透视表引用了表格区域,并且表格区域可能会新增一些列,这个表格是通过数据绑定来实现的。这个时候就需要分别更新表格的数据源以及数据透视表。

那这样一个背景,我们可以分成两个部分来讨论。分别是给表格绑定新增表格列以及更新数据透视表及其面板。

第一个部分,表格绑定新增表格列。首先还是比较常规的部分,进行表格绑定。对表格绑定还不太熟悉的朋友可以先去看下前面的视频教程。


绑定完成之后,我们再来加一个数据透视表。


实现之后我们可以看到带有绑定数据源的table


以及一个数据透视表


那接下来就是插入列的操作了,我们可以通过表格的insertColumns接口来实现表格新增列,需要注意第三个参数,是一个布尔值,表示在指定列索引的前面插入还是后面插入。
table.insertColumns(2, 1, true);


插入完成之后,我们可以更新数据源或者我们直接返回的就是一个带有多一个cost属性的数据源也是可以的。因为表格绑定会根据绑定路径与数据源对应上,如果没有对应的,那么在绑定之后不会显示出来。


那我们怎么处理多出来的列呢?答案就是new一个TableColumn,并为其指定name以及绑定路径,然后将其添加到我们前面绑定时所构建的tableColumns数组中。最后再通过setDataSouce将新的数据源进行绑定。
var tableColumnNew = new spreadNS.Tables.TableColumn();
                                        tableColumnNew.name("cost");
                                        tableColumnNew.dataField("cost");
                                        tableColumns.push(tableColumnNew);

                                        table.bindColumns(tableColumns);
                                        table.bindingPath('sales');
                                        source = new GC.Spread.Sheets.Bindings.CellBindingSource(newdata);
                                        sheet.setDataSource(source);

那以上就是更新数据源的操作的。那我们的数据源更新了,我们的透视表也需要进行更新。我们可以通过updateSource更新透视表的数据源,然后通过add方法为透视表的值字段加上一个cost字段。
myPivotTable.updateSource()
                                        myPivotTable.add("cost", "Cost", GC.Spread.Pivot.PivotTableFieldType.valueField);

最终的效果就是表格中多了一列


数据透视表也做了更新



下载附件即可查看完整的demo。
页: [1]
查看完整版本: 表格绑定中插入列并更新对应的数据透视表