2014-01-09 1 views
5

나는 반응이 빠른 sap.m.table을 만들었습니다. 그러나 데이터 개체에서 값을로드 할 수 없습니다. 나는 "subvariants"개체의 배열을 lapping 싶어요. 도움이SAPUI5 Sap.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

Esp. 마지막 줄을 주목하십시오! 일반 JSON 데이터에 바인딩 할 수 없으면 먼저 sap.ui.model.json.JSONModel을 만들어야합니다. – cschuff