找回密码
 立即注册

QQ登录

只需一步,快速开始

Lynn.Dou 讲师达人认证 悬赏达人认证 SpreadJS 开发认证
超级版主   /  发表于:2023-2-28 15:02  /   查看:1989  /  回复:0
背景:

用户在加载table模板文件时,需要根据需求新增table绑定列,来渲染加载数据源。
这该如何实现呢?

步骤:
了解数据绑定的小伙伴应该能想到,绑定列就是通过tableColumn来实现的,我们只需要将table模板中的tableColumns获取到,
再push进去新的tableColumn,重新bindColumns即可。
目前table没有直接获取columns信息的接口, 不过SpreadJS提供了 getColumnDataField 和 getColumnName 方法。
所以可以获取table某一列的字段名和name,您可以重新new TableColumn,然后将新的TableColumn添加进去,再进行bindColumns 绑定。
主要代码如下:
  1. document.getElementById("addColumn").addEventListener("click", function () {
  2.                 var tableColumns = [];
  3.                 var table = sheet.tables.all()[0];
  4.                 var cc = table.range().colCount;
  5.                 // 获取table原有column
  6.                 for (var c = 0; c < cc; c++) {
  7.                     var dataField = table.getColumnDataField(c);
  8.                     var name = table.getColumnName(c);
  9.                     var tableColumn = new GC.Spread.Sheets.Tables.TableColumn();
  10.                     tableColumn.name(name);
  11.                     tableColumn.dataField(dataField);
  12.                     tableColumns.push(tableColumn);
  13.                 }
  14.                 // 添加新的column
  15.                 var newTableColumn = new GC.Spread.Sheets.Tables.TableColumn();
  16.                 newTableColumn.name("totlt");
  17.                 newTableColumn.dataField("totlte");
  18.                 tableColumns.push(newTableColumn);
  19.                 console.log(tableColumns);
  20.                 // table新增一列
  21.                 table.insertColumns(cc-1, 1, true);
  22.                 // bindColumns
  23.                 table.bindColumns(tableColumns);
  24.                 // 加载数据源
  25.                 var dataSource = {
  26.                     test: [
  27.                         {test1: 'test1', test2: 'A', test3: true,  totlte: 1},
  28.                         {test1: 'test1', test2: 'B', test3: false, totlte: 1},
  29.                         {test1: 'test1', test2: 'B', test3: true, totlte: 1},
  30.                         {test1: 'test1', test2: 'A', test3: false, totlte: 1}
  31.                     ]
  32.                 }
  33.                 var datasource = new GC.Spread.Sheets.Bindings.CellBindingSource(dataSource);
  34.                 sheet.setDataSource(datasource);
  35.             })
复制代码

完整代码见附件demo,供参考。
1.gif

数据绑定-新增绑定列.zip

2.71 KB, 下载次数: 171

0 个回复

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