在sap.m.Table控件中绑定/显示OData数据

时间:2018-02-05 15:26:26

标签: sapui5

我在表格控件中遇到问题绑定OData,我希望你们中的一位专家能够花费一毫秒的时间来告诉我在哪里搞砸了。

我可以从后端服务器获取OData信息 - 第一步是我只想在带有列的表中显示它,第二步是向用户显示一个分段按钮以启用/禁用国家/地区数据的处理。让我们现在只显示数据。

这是从支持的返回的OData backend odata

这是我的createContent代码 - 我想在JavaScript中执行:

        var oTable = new Table({
            height: '100%',
            firstVisibleRow: 0,
            visibleRowCountMode: sap.ui.table.VisibleRowCountMode.Auto,
            selectionMode: sap.ui.table.SelectionMode.None,
            selectionBehavior: sap.ui.table.SelectionBehavior.RowOnly
        }).addStyleClass('suggCompTableStyle');

        var oColName = new sap.ui.table.Column().setLabel('{i18n>txt_countryName}').bindElement("/data>LANDX");
        oTable.addColumn(oColName);

        var oModel = sap.ui.getCore().getModel();
        oModel.callFunction("/getCountryActiveList", 
                            "GET", 
                            {SPRAS: 'E'}, 
                            null, 
                            function(oData, oResponse)
                                { oTable.setModel( new sap.ui.model.json.JSONModel({data : oData.results}));
                                  oTable.bindRows("/data");
                                  alert("ok"); },
                            function(oError) {alert("err"); });
        /* eslint-enable no-alert */
        oTable.placeAt("content");

        var oPage = new sap.m.Page({
            title: "{i18n>title}",
            content: [
                oTable
            ]
        });

        var app = new sap.m.App("myApp", {
            initialPage: "oPage"
        });
        app.addPage(oPage);
        return app;
    }/* end createContent function */

我的表是使用正确的行数创建的,但不显示列数据。我想我对如何绑定列数据感到困惑?

感谢您的帮助。 史蒂夫

1 个答案:

答案 0 :(得分:0)

问题在于您的约束oTable.bindRows("/data");

bindRows 方法期望对sap.ui.table.Row类型的行模板控件。

您可以查看https://sapui5.hana.ondemand.com/#/api/sap.ui.base.ManagedObject/methods/bindAggregation以获取更多信息。 bindRows 方法要求输入参数等于上面链接I中 bindAggregation 方法的 oBindingInfo