2017-03-25 11 views
-2

私は購入注文のフィオリアプリを開発中です。私はヘッダデータをバインドしていますが、ヘッダデータにアイテムデータをバインドしていません。 私のJSONデータ:"E_HEADER":[ { "BUKRS":"9000", "EBELN":"4802000006", "LIFNR":"0000200040", "NAME_LIFNR":"TİC.LTD.Ş", "KUNNR":"", "NAME_KUNNR":"", "AEDAT":"2015-08-10", "ERNAM":"", "FRGGR":"10", "FRGKE":"X", "FRGRL":"X", "FRGZU":"", "FRGSX":"01", "WAERS":"USD", "ZTERM":"", "BEDAT":"2015-08-10", "EBELP":"00000", "NETWR_ITEM":0.0, "ITEM":[ { "EBELN":"4802000006", "EBELP":"00010", "MATNR":"000000004000000945", "MAKTX":"(ÇİFT)", "WERKS":"1000", "NAME_WERKS":" A.Ş.", "LGORT":"TS03", "LGOBE":"-Seym", "MENGE":0.0, "MEINS":"KI", "NETPR":1.5, "NETWR":0.0} ] },SAP UI5テーブルデータバインディングJS

sap.ui.controller( "sasony.Detail"、{ のOnInit:関数(){

this.router = sap.ui.core.UIComponent.getRouterFor(this); 
    this.router.attachRoutePatternMatched(this._handleRouteMatched, this); 

}, 

_handleRouteMatched: function(evt) { 

    this.catIndex = evt.getParameter("arguments").catIndex; 
    this.subCatIndex = evt.getParameter("arguments").subCatIndex; 

    var context = sap.ui.getCore().byId("App").getModel('header').getContext('/' + this.catIndex + '/ITEM/' + this.subCatIndex); 

    this.getView().setBindingContext(context,'item'); 

}, 

goBack: function() { 

    this.router.navTo(""); 

} 

})。

 var oTable = new sap.m.Table({ 
     id:"oTable", 
     inset : true, 
     headerDesign : sap.m.ListHeaderDesign.Standard, 
     columns : [ new sap.m.Column({ 
      header :[ new sap.m.Label({text : "Belge No"}) ] 
        }), 
        new sap.m.Column({ 
      header :[ new sap.m.Label({text : "Kalem No"}) ] 
        }), 
] 
        }); 
        oTable.bindItems("item>/", new sap.m.ColumnListItem("listItem",{ 
      cells : [ 
        new sap.m.Text({text : "{item>EBELN}"}), 
        new sap.m.Text({text : "{item>EBELP}"}), 
        ] 
    })); 

が助けてください詳細ビュー。

よろしく

答えて

0

あなたは正しくsetBindingContext(oContext, sModelName)を使用していません。

{string} sModelName?以下のためのコンテキストを設定するためのモデルの名前または未定義

は、私はあなたがitemモデルを持っていないことを前提とし、その代わりに、あなたは(私はあなたがあなたのコントローラ内で参照されている参照のこと)headerモデルを持っています。とにかく、バインディングコンテキストは、の相対バインディング(バインディングパスは/で始まらない)を使用している場合にのみ使用されます。

また、選択したヘッダーの選択項目(たとえば/E_HEADER/0/ITEM/0)に対して表をバインドしていることがわかりました。あなたの例では、それ自身の個々の項目がコレクションではないので(実際には、項目属性ごとに1つのテーブル行があることになります)、実際には意味をなさないでしょう。

通常、UI5では、同じheaderモデルを相対バインディングと組み合わせて使用​​します。これは、あなたが次のことを変更する必要があることを意味します

  • 変更headerモデルと相対的な結合を使用する結合テーブルのitems集約。例えば:oTable.bindItems("header>SOMETHING" //...
  • 変更テキストのバインディングは、ヘッダーのモデルを使用するには:new sap.m.Text({text : "{header>EBELN}"})
  • バインドパスへのあなたの_handleRouteMatched内部ビュー:
// it is prefferable to use bind element (creates a binding context 
    // "behind the scenes") 
    this.getView().bindElement({ 
     path: '/' + this.catIndex + '/ITEM/' + this.subCatIndex, 
     model: 'header' 
    }); 
関連する問題