SAPUI5-工厂函数不显示列和项的sap.m.Table

SAPUI5-工厂函数不显示列和项的sap.m.Table,sapui5,Sapui5,我需要从oData动态填充列和行。出于测试目的,我为列和行创建了以下JSON文件 column.json { "Columns": [ { "column": "col1" }, { "column": "col2" }, { "column": "col3" } ] } row.json { "Rows": [ { "col1": "abc", "col2": "de

我需要从oData动态填充列和行。出于测试目的,我为列和行创建了以下JSON文件

column.json    

{
    "Columns":  [
        { "column": "col1" },
        { "column": "col2" },
        { "column": "col3" }
    ]
}


row.json

{
    "Rows":  [
        { "col1": "abc",
          "col2": "def",
          "col3": "ghi"
        },
        { "col1": "jkl",
          "col2": "mno",
          "col3": "pqr"
        }
    ]
}
这是我的看法

<core:View xmlns:core="sap.ui.core" xmlns:mvc="sap.ui.core.mvc" xmlns="sap.m"
        controllerName="sam.test" xmlns:html="http://www.w3.org/1999/xhtml">
    <Table id="ID" 
        columns="{path: 'Column>/Columns', factory: '.populateColumns'}"
        items="{path: 'Row>/Rows', factory: '.populateItems'}">
    </Table></core:View>
然而,这是行不通的。它呈现没有列标题和行的表。当我将行直接绑定到表的项聚合,并提供具有相同值的列聚合时,它会起作用

我错过什么了吗?我很难弄明白这一点。任何指点都将不胜感激


谢谢

3个我发现的错误:

  • 列类型错误:new sap.ui.table.Column-正确的列类型应为sap.m.Column,因为这是一个sap.m.table
  • sap.m.ColumnListItem使用的聚合名称错误:正确的聚合是单元格单元格(输入错误)
  • ColumnListItem绑定了错误的模型:它应该是行>列1,而不是列>列1,因为行模型存储数据 让我们更正这些错误,下面是工作代码:

     populateItems: function(sId, oContext) {
                var row = new sap.m.ColumnListItem(sId, {
                    type: "Active",
                    cells: [
                           new sap.m.Text({
                               text: "{Row>col1}"
                           }),
                           new sap.m.Text({
                               text: "{Row>col2}"
                           }),
                           new sap.m.Text({
                               text: "{Row>col3}"
                           })
                    ]
                });
    
                return row;
            },
    
            populateColumns: function(sId, oContext) {
                var sColumnId = oContext.getObject().column;
    
                return new sap.m.Column({
                  header: new sap.m.Text({
                      text:'{Column>column}'
                  })
                });
            },
    
    让我知道这是否有效


    我发现了三个错误:

  • 列类型错误:new sap.ui.table.Column-正确的列类型应为sap.m.Column,因为这是一个sap.m.table
  • sap.m.ColumnListItem使用的聚合名称错误:正确的聚合是单元格单元格(输入错误)
  • ColumnListItem绑定了错误的模型:它应该是行>列1,而不是列>列1,因为行模型存储数据 让我们更正这些错误,下面是工作代码:

     populateItems: function(sId, oContext) {
                var row = new sap.m.ColumnListItem(sId, {
                    type: "Active",
                    cells: [
                           new sap.m.Text({
                               text: "{Row>col1}"
                           }),
                           new sap.m.Text({
                               text: "{Row>col2}"
                           }),
                           new sap.m.Text({
                               text: "{Row>col3}"
                           })
                    ]
                });
    
                return row;
            },
    
            populateColumns: function(sId, oContext) {
                var sColumnId = oContext.getObject().column;
    
                return new sap.m.Column({
                  header: new sap.m.Text({
                      text:'{Column>column}'
                  })
                });
            },
    
    让我知道这是否有效