您好,这边调研了一下,您可以参考以下代码来实现:
- let schemaColumns =
- spread.dataManager().tables["表1"].options.schema.columns;
- let columns = spread.dataManager().tables["表1"].columns;
- let map = {};
- for (const key in schemaColumns) {
- if (schemaColumns[key].dataName) {
- map[schemaColumns[key].dataName] = key;
- }
- }
- spread.dataManager().tables["表1"].columns = null;
- spread.dataManager().tables["表1"].options.schema.columns = null;
- spread
- .dataManager()
- .tables["表1"].fetch(true)
- .then(() => {
- let option = spread.dataManager().tables["表1"].options;
- for (const key in map) {
- delete option.schema.columns[key];
- delete spread.dataManager().tables["表1"].columns[key];
- option.schema.columns[map[key]] = schemaColumns[map[key]];
- spread.dataManager().tables["表1"].columns[map[key]] =
- columns[map[key]];
- }
- designer.refresh();
- });
复制代码
具体的测试方法如下:
1、读取数据源
2、修改某列的映射列名
3、修改数据源,删除某一列
4、执行上述代码
5、删除列的字段消失,修改了映射列名的列依然存在且映射列名仍生效 |