2017-01-27 11 views
0

У меня есть приложение UI5, в котором у меня есть таблица, определенная в моем XMLView. Я делаю вызов бэкэнд с помощью OData для извлечения данных. Я делаю это следующим образом.Как связать OData напрямую с XMLView

var oModel = new sap.ui.model.odata.ODataModel("url to data", true); 
      var inputModel = new JSONModel(); 

      oModel.read("/Products", 
       null, 
       null, 
       false, 
       function _OnSuccess(oData, response) { 
        var data = oData.results; 
        inputModel.setData(data); 
       }, 
       function _OnError(error) { 
        console.log(error); 
       }); 

      //set model(s) to current xml view 
      this.getView().setModel(inputModel, "inputModel"); 

Как я могу это сделать без того, чтобы создать модель JSON, я имею в виду связать OData непосредственно к XMLView.

Я видел, как это делается, но только с JSView, например:

var oModel = new sap.ui.model.odata.v2.ODataModel("http://admin- think:88/sap/...",{useBatch : true}); 
    sap.ui.getCore().setModel(oModel,"model1"); 

// Create instance of table 
var oTable = new sap.ui.table.Table({ 
visibleRowCount : 6, 
    selectionMode: sap.ui.table.SelectionMode.Single, 
    navigationMode: sap.ui.table.NavigationMode.scrollbar, 
    selectionBehavior: sap.ui.table.SelectionBehavior.RowOnly 
}); 

// First column "Application" 
oTable.addColumn(new sap.ui.table.Column({ 
     label : new sap.ui.commons.Label({ 
      text : "APPLICATION", 
      textAlign : "Center", 

     }), 
     template : new sap.ui.commons.TextView({ 
      textAlign:"Center"}).bindProperty("text","model1>Applno"),    
})); 

// Bind model to table control  
oTable.bindRows("model1>/"); 

Таким образом, кажется, что много работы. Как я могу сделать что-то подобное, но используя представление XML?

+0

Вы читали документацию? – matbtt

+0

Я читал некоторые (sapui5 api и другие источники), но я не понимаю, насколько это честно. Разум указывает мне на документацию, на которую вы ссылаетесь? – polaris

+0

Я понимаю, почему кто-то занижает такие вопросы, но IMHO, документация UI5 - это джунгли без правильной функции поиска, что затрудняет работу новичков. @polaris: Я бы предложил несколько дней пройти через шаги Прохода в руководстве для разработчиков: https://openui5.hana.ondemand.com/#docs/guide/3da5f4be63264db99f2e5b04c5e853db.html – boghyon

ответ

1

XML код:

<mvc:View 
    controllerName="sap.m.sample.Table.Table" 
    xmlns:l="sap.ui.layout" 
    xmlns:mvc="sap.ui.core.mvc" 
    xmlns="sap.m"> 
    <Table id="idProductsTable" 
     inset="false" 
     items="{Data>/Table}"> 
     <columns> 
      <Column> 
       <Text text="Name" /> 
      </Column> 
      <Column> 
       <Text text="id" /> 
      </Column> 
     </columns> 
     <items> 
      <ColumnListItem> 
       <cells> 
        <Text 
         text="{Data>name}" /> 
        <Text 
         text="{Data>id}" /> 
       </cells> 
      </ColumnListItem> 
     </items> 
    </Table> 
</mvc:View> 

JS код:

onAfterRendering : function(){ 
    var oView = this.getView(); 
    var oTableJSON = new sap.ui.model.json.JSONModel(); 
    var fnSuccess = function(oEvent,oResponse){ 
     var Data = { 
      Table : oData.results, 
     }; 
     oTableJSON.setData(Data); 
     oView.byId("idProductsTable").setModel(oTableJSON,"Data"); 
    }; 
    oModel("/ProductionSet",null,null,true,fnSuccess,fnFail); 
}