2016-12-21 2 views
0

Ich muss eine Liste in einer Tabelle anzeigen. Diese Liste sollte auf der Client-Seite gefiltert werden, und deshalb muss ich das OData-Modell in ein lokales JSON-Modell kopieren.Kopieren Sie ODataModel in JSONModel für die Verwendung in Tabelle

Das OData Modell sieht wie folgt aus:

OData Modell

enter image description here

Ich bin in der Lage, die "/ ZcountWerksSet" Liste anzuzeigen (aus dem OData-Modell) in einer Tabelle mit diesem Code:

oSearchTable.bindAggregation("items", "/ZcountWerksSet", new sap.m.ColumnListItem({ 
      cells : [ 
        new sap.m.Text({ 
         text : "{Name1}" 
        }), 
        new sap.m.Text({ 
         text : "{Werks}" 
        }) 
      ] 
     })); 

Dann kopiere ich diese in ein JSON-Modell wie folgt aus:

  var oModel = this.getView().getModel(); 
      var oModelJson = new sap.ui.model.json.JSONModel(); 
      oModel.read("/ZcountWerksSet", { 
      success: function(oData, response) { 
       oModelJson.setData(oData); 
       sap.ui.getCore().setModel(oModelJson, "oJSONModel"); 
       alert("Success!"); 
      }, 
      error: function(response) { 
       alert("Error"); 
      } 
     }); 

Dann sieht das Modell wie diese

JSON Modell

JSON Model

Den Versuch, die gleiche Liste anzuzeigen (von JSON Modell dieses Mal), in einer Tabelle mit dem folgenden Code nicht funktioniert :

oSearchTable.bindAggregation("items", "{oJSONModel>/}", new sap.m.ColumnListItem({ 
      cells : [ 
        new sap.m.Text({ 
         text : "{oJSONModel>Name1}" 
        }), 
        new sap.m.Text({ 
         text : "{oJSONModel>Werks}" 
        }) 
      ] 
     })); 

Wie kann ich die gleichen Daten in der Tabelle zeigen, aber dieses Mal aus dem JSON-Modell nur?

Irgendwelche Ideen, was ich falsch mache?

Antwort

0

Sie müssen den Bindungspfad zu {oJSONModel>/results} übernehmen, da eine andere Bindungsimplementierung für ein JSONModel verwendet wird.

0

Sie haben Recht. Ich habe es so gemacht, funktioniert jetzt gut.

 var oSearchTable = sap.ui.getCore().byId("searchTableId"); 
     var oModel = this.getView().getModel(); 
     var oModelJson = new sap.ui.model.json.JSONModel(); 
     oModel.read("/ZcountWerksSet", { 
      success: function(oData, response) { 
       oModelJson.setData(oData); 
       var oRow = new sap.m.ColumnListItem({ 
        cells : [ 
          new sap.m.Text({ 
           text : "{Name1}" 
          }), 
          new sap.m.Text({ 
           text : "{Werks}" 
          }) 
        ] 
       }); 
       oSearchTable.setModel(oModelJson); 
       oSearchTable.bindItems("/results", oRow); 
       sap.ui.getCore().setModel(oModelJson, "oJSONModel"); 
      } 
     }); 
Verwandte Themen