table 的 SAPUI5 数据绑定不起作用

SAPUI5 Data binding for table not working

我是 SAPUI5 开发的新手,我在 table 中遇到数据绑定问题。在我的其他 table 中它有效,但这个很奇怪。

我正在打开一个值助手对话框,并希望在 table 中显示一些数据。

我当前的代码是:

        //
        oTable = this._oValueHelpDialog.getTable();
        oTable.setModel(this.getModel());
        oTable.setModel(oCol, "columns");       

        // bind aggregation
        // items
        // shrhelpSet
        // spalten heißen key und value

        var oTemplate = new sap.m.ColumnListItem({
            cells: [
                new sap.m.Text({
                    text: "{key}"
                }),
                new sap.m.Text({
                    text: "{value}"
                })]
            });

        oTable.bindAggregation("items", "/shrhelpSet", oTemplate);

我的控制台显示 "Aggregation "items“在元素 sap.ui.table.Table#__table0 中不存在” 当我使用另一种绑定方法(例如 oTable.bindItems() 或 bindRows() 时,它表示该方法未定义或无法找到。 我很惊讶我在值助手中遇到了这个问题,在我的其他 table 中我没有数据绑定问题。

sap.m.Table 具有聚合 "items",但在您的情况下,table 是使用聚合 "rows" 的“sap.ui.table.Table”。这也是其他方法不起作用的原因。

"ColumnListItem" 也不起作用,因为聚合需要“sap.ui.table.Row”。

对于数据绑定,请查看 grid table 的示例。

这对我有用并解决了我的问题

        var aColumnData = [{
            columnId: "Key"
        }, {
            columnId: "Value"
        }];

        var aData = [{
            Key: "asdf",
            Value: "hey"    
        }, {
            Key: "abcd",
            Value: "hey2"
        }];

        var oModel2 = new sap.ui.model.json.JSONModel();

        oModel2.setData({
            columns: aColumnData,
            rows: aData
        });

        oTable.setModel(oModel2);

        oTable.bindColumns("/columns", function(index, context) {
            var sColumnId = context.getObject().columnId;
            //alert(sColumnId);
            return new sap.ui.table.Column({
                id : sColumnId,
                label: sColumnId,
                template: sColumnId
            });
        });
        oTable.bindRows("/rows");