我使用 SheetJS 将 excel 工作表上传到ui.table
. 上传时,我在列名中添加了一个技术 ID,稍后在我的项目中将需要它。这就是我添加技术 ID 的方式:
getColumnNames: function(worksheet, aData) {
var firstRow = aData[0];
var oColumns = [];
var cells = Object.keys(worksheet);
for (var i = 0; i < Object.keys(firstRow).length; i++) {
var columnName = Object.keys(firstRow)[i];
var technicalName = "COL" + ('0' + (i+1)).slice(-2);
oColumns.push({
columnId: columnName,
technicalId: technicalName
});
}
return oColumns;
},
创建模型时,我将columnId
和绑定technicalId
到每一列。
我的用户应该可以选择重新排序表列,以便映射到另一个表。(这里的上下文并不真正相关)所以基本上我上传的表格下面还有另一个表格,用户应该能够重新排序“uploadTable”的列以将它们与下表匹配。
现在为了进行正确的映射,我的技术 ID 必须在重新排序完成后进行调整。因此,我想添加一个在用户单击“刷新”按钮后正在执行的功能。
这个功能应该调整技术columnNames
。--> 例如,数据已上传,位置 1 的列具有技术 ID“COL01”,现在它被拖到位置 2 --> 技术 ID 应更改为 COL02,反之亦然。
我相信,做到这一点的唯一方法是访问表的 DomRef,因为这是存储实际当前表结构的唯一地方,但我不确定我将如何进行。
到目前为止,我的重新排序功能仅获取数据:
onReorder : function() {
var table = this.getView().byId("uploadData");
var currentStructre = table.getDomRef();
},
我将不胜感激任何提示。如果有什么不清楚的地方,我很乐意解释!