SAPUI5列表/组合框数据绑定替换为表

时间:2020-01-15 12:30:16

标签: javascript data-binding sapui5 sap-fiori

我必须用表替换列表(组合框)中的数据绑定。重要的是,我们添加过滤器以在组合框中具有正确的数据绑定。 oInput被定义为组合框:

            oInput.setModel(oView.getModel());
            oInput.bindAggregation("items", "/shrhelpSet", oTemplete);

            oFilterObject = new sap.ui.model.Filter("object", "EQ", that.g_object);
            oFilterField = new sap.ui.model.Filter("field", "EQ",
                that.g_TechNameArr[i]);
            oFilterLang = new Filter("lang", "EQ", sCurrentLocale);
            oFilters = new sap.ui.model.Filter([oFilterObject, oFilterField, oFilterLang], true);

            oInput.getBinding("items").filter(oFilters);

我的问题是如何将其替换为带有表的绑定。我在ValueHelpDialog中使用sap.ui.table。我已经在数组中定义了固定的列数据,现在我需要将列表绑定中的数据添加到行绑定的数组中。我定义了一个数组“ aData”,其中我必须将数据集/ shrhelpSet的数据放入过滤器中。我尝试过

    //var aData = this.getModel().getData("/shrhelpSet").filter(oFilters);

但这是错误的方法。

        // array with fix column names
        var aColumnData = [{
            columnId: "Key"
        }, {
            columnId: "Value"
        }];

        //var aData = this.getModel().getData("/shrhelpSet").filter(oFilters);

        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");

1 个答案:

答案 0 :(得分:1)

尝试像以前对输入项的聚合一样,将过滤器添加到行聚合的绑定中。

oTable.getBinding("rows").filter(oFilters);

必须在代码段的最后一行之后(在行被绑定之后)完成。

相关问题