table没有直接获取columns信息的接口, 不过SpreadJS提供了 getColumnDataField 和 getColumnName 方法,
可以获取table某一列的字段名和name,您可以重新new TableColumn,然后将新的TableColumn添加进去,再进行bindColumns 绑定。
附件为示例demo,供参考。
主要代码如下:
- document.getElementById("addColumn").addEventListener("click", function () {
- var tableColumns = [];
- var table = sheet.tables.all()[0];
- var cc = table.range().colCount;
- // 获取table原有column
- for (var c = 0; c < cc; c++) {
- var dataField = table.getColumnDataField(c);
- var name = table.getColumnName(c);
- var tableColumn = new GC.Spread.Sheets.Tables.TableColumn();
- tableColumn.name(name);
- tableColumn.dataField(dataField);
- tableColumns.push(tableColumn);
- }
- // 添加新的column
- var newTableColumn = new GC.Spread.Sheets.Tables.TableColumn();
- newTableColumn.name("totlt");
- newTableColumn.dataField("totlte");
- tableColumns.push(newTableColumn);
- console.log(tableColumns);
- // table新增一列
- table.insertColumns(cc-1, 1, true);
- // bindColumns
- table.bindColumns(tableColumns);
- // 加载数据源
- var dataSource = {
- test: [
- {test1: 'test1', test2: 'A', test3: true, totlte: 1},
- {test1: 'test1', test2: 'B', test3: false, totlte: 1},
- {test1: 'test1', test2: 'B', test3: true, totlte: 1},
- {test1: 'test1', test2: 'A', test3: false, totlte: 1}
- ]
- }
- var datasource = new GC.Spread.Sheets.Bindings.CellBindingSource(dataSource);
- sheet.setDataSource(datasource);
- })
复制代码
|
|