SAPUI5 Sap.m.Table 动态创建

标签 sapui5

我创建了一个响应式 sap.m.table。但我无法从数据对象加载值。我想 Laod 对象的“subvariants”数组。请帮忙

 summaryDetailData={"subvariants":[{"currentValue":"","Article":"1234567","question":"Carpet Installation type"},{"currentValue":"","question":"CarpetQuantity"},{"currentValue":"","Article":"1234568","question":"Underpad type"},{"currentValue":"","question":"UnderpadQuantity"},{"currentValue":false,"Article":"1234568","question":"Rapid Install"}]}



  var oTable = new sap.m.Table("idRandomDataTable", {
    headerToolbar: new sap.m.Toolbar({
    content: [
    new sap.m.Label({text: "Summary Data"}),
    new sap.m.ToolbarSpacer({}),
    new sap.m.Button("idPersonalizationButton", {
    icon: "sap-icon://person-placeholder"
    })]}),
     columns: summaryDetailData.cols.map(function (colname) {
        return new sap.m.Column({ header: new sap.m.Label({ text: colname })})
            })      
    });

    oTable.setModel(new sap.ui.model.json.JSONModel(summaryDetailData));
    oTable.bindAggregation("subvariants", "/subvariants", new sap.m.ColumnListItem({
        cells: oData.cols.map(function (colname) {
            return new sap.m.Label({ text: "{" + colname.toLowerCase() + "}" })
            })
        }));

最佳答案

将模型绑定(bind)到表的方式并不完全正确。您必须使用 bindItems 将表行(项目)动态绑定(bind)到模型。 columns 聚合用于定义表的列布局,而 items 聚合负责表记录。

在您的情况下,我将在控件定义中创建列,并使用您自己的模板将项目绑定(bind)到模型。

这应该符合您的预期(测试过):

var oTable = new sap.m.Table("idRandomDataTable", {
        headerToolbar : new sap.m.Toolbar({
            content : [ new sap.m.Label({
                text : "Summary Data"
            }), new sap.m.ToolbarSpacer({}), new sap.m.Button("idPersonalizationButton", {
                icon : "sap-icon://person-placeholder"
            }) ]
        }),
        columns : [ new sap.m.Column({
            width : "2em",
            header : new sap.m.Label({
                text : "Current Value"
            })
        }), new sap.m.Column({
            width : "2em",
            header : new sap.m.Label({
                text : "Article"
            })
        }), new sap.m.Column({
            width : "2em",
            header : new sap.m.Label({
                text : "Question"
            })
        }) ]
    });

    oTable.bindItems("/subvariants", new sap.m.ColumnListItem({
        cells : [ new sap.m.Text({
            text : "{currentValue}"
        }), new sap.m.Text({
            text : "{Article}"
        }), new sap.m.Text({
            text : "{question}",
        }), ]
    }));

    oTable.setModel(new sap.ui.model.json.JSONModel(summaryDetailData));

希望这对您有帮助!

关于SAPUI5 Sap.m.Table 动态创建,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21014145/

相关文章:

sapui5 - UI5 路由 View 按预期绑定(bind)元素,但无法正确找到路径

javascript - 使用 EventDelegate 作为按钮按下监听器

javascript - `this` 内部格式化函数

javascript - 使用 SAPUI5 项目的 sap.ui.ux3.Shell 时无法在 iPhone 上滚动

javascript - 在UI5表单输入字段中显示odata时间值

sapui5 - sapui5 和 openui5 的应用程序

javascript - SAPUI5:无效和重新渲染之间的区别

javascript - SAPUI5/OPENUI5 : Bind string to JSON model and update bigger string automatically (it reads [object%20Object])

javascript - SAPPUI5从表中获取选定的项目

.net - 使用 WEB API OData v4 调用元数据时出现 404 错误