代码之家  ›  专栏  ›  技术社区  ›  sonja

表列重新排序的自定义函数-->更改基础表模型

  •  0
  • sonja  · 技术社区  · 6 年前

    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

    我的用户应该可以选择对表列重新排序,以便映射到另一个表(这里的上下文不是真正相关的)所以基本上在我上传的表下面有另一个表,用户应该能够重新排序“上传表”的列,使它们与下表匹配。

    现在为了做一个正确的映射,我的技术ID必须在重新排序完成后进行调整。因此,我想添加一个在用户单击“刷新”按钮后执行的函数。

    columnNames . --&燃气轮机;例如,数据上传,位置1上的列具有技术ID“COL01”,现在它被拖到位置2-->技术ID应更改为COL02,反之亦然。

    我的重新排序函数只获取目前为止的数据:

    onReorder : function() {
        var table = this.getView().byId("uploadData");
        var currentStructre = table.getDomRef();
    },
    

    如果有任何提示,我将不胜感激。如果有什么不清楚的地方,我很乐意解释!

    1 回复  |  直到 6 年前
        1
  •  0
  •   rikusv    6 年前

    sap.ui.table.Table 允许通过拖放对其列重新排序,并且 columnMove 之后被解雇。

    可以使用以下方法跟踪和更新某些序列标签(例如ID):

    记住id(例如列标签为id):

    ids = oTable.getColumns().map(oColumn => oColumn.getAggregation('label').getText())
    

    更新ID:

    oTable.attachColumnMove(function(oEvent) {
      var from = oEvent.getParameter('column').getIndex();
      var to = oEvent.getParameter('newPos');
      var name = names.splice(from, 1);
      names.splice(to, 0, name);
      // Then write new ids to model;
    })