2016-12-21 9 views
0

Мне нужно показать список в таблице. Этот список должен быть отфильтрован на стороне клиента, и из-за этого мне нужно скопировать модель OData в локальную модель JSON.Скопируйте ODataModel в JSONModel для использования в таблице

Модель OData выглядит следующим образом:

OData модель

enter image description here

Я могу показать список "/ ZcountWerksSet" (от модели OData) внутри таблицы, используя этот код:

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

Тогда я копирую это в модель JSON как это:

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

Тогда модель выглядит следующим образом

JSON модели

JSON Model

Пытаюсь показать тот же самый список (из JSON модели на этот раз), в таблице, используя следующий код не работает :

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

Как я могу показать те же данные в таблице, но только от модели JSON на этот раз?

Любые идеи, что я делаю неправильно?

ответ

0

Вам необходимо принять ваш путь привязки к {oJSONModel>/results}, поскольку для JSONModel используется другая реализация привязки.

0

Вы правы. Я сделал это так, теперь отлично работает.

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

 Смежные вопросы

  • Нет связанных вопросов^_^