2014-01-09 69 views
5

我創建了一個響應式sap.m.table。但我無法從數據對象中加載值。我想要放置「subvariants」對象數組。請幫助SAPUI5 SAPap.m.Table動態創建

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() + "}" }) 
      }) 
     })); 

回答

8

將模型綁定到表的方式並不完全正確。您必須使用bindItems將表格行(項目)動態綁定到模型。 columns聚合用於定義表格的列布局,而items聚合負責表格記錄。

在你的情況下,我會在控件定義中創建列並使用自己的模板將項綁定到模型。

這應該做......你所期待的(測試過):

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

希望這可以幫助你!

+0

特別提示:注意最後一行!你不能綁定純JSON數據,你必須先從它創建一個sap.ui.model.json.JSONModel。 – cschuff