2017-01-03 20 views
0

Я пытаюсь связать SmartTable с сервисом odata, но таблица показывает «Нет данных». Мой код, как показано ниже:SmartTable Binding с сервисом oData

<smartTable:SmartTable 
        id="PersonSmartTable" 
        entitySet="DataSetInODataService" 
        tableBindingPath = "Odata 2 Model Name definded in Menifest.json" 
        tableType="ResponsiveTable" 
        useExportToExcel="false" 
        useVariantManagement="false" 
        useTablePersonalisation="true" 
        header="The Persons" 
        showRowCount="true" 
        enableAutoBinding="false"> 
     <!-- layout data used to make the table growing but the filter bar fixed --> 
     <smartTable:layoutData> 
      <FlexItemData growFactor="1"/> 
     </smartTable:layoutData> 
    </smartTable:SmartTable> 

В таблице сетки я использовал код связывания данных, как

rows="{ path: 'oData 2 Model Name>/DataSetInODataService' }" 

Может ли один предоставить мне образец кода для этого?

Благодаря Суман

ответ

0

Большой ресурс для почти ничего «стандарт SAPUI5» родственный приложение SAPUI5 Explored. Если вы ищете «Умный стол», вы также найдете образец this.

Там вы увидите, что они не использовали свойство tableBindingPath, но привязали модель к родительскому виду SmartTable (см. Образец SmartTable.controller.js). SmartTable тогда достаточно умен, чтобы использовать вашу указанную модель entitySet вашей модели.

Если вы определили модель OData в своей manifest.json, чтобы быть стандартной моделью, она уже должна быть привязана к вашему виду, и удаление tableBindingPath должно сделать трюк.

  • manifest.json

    { 
        "_version": "1.1.0", 
        "sap.app": { 
         ... 
         "dataSources": { 
         "localService": { 
          "uri": "/", 
          "type": "OData", 
          "settings": { 
           "odataVersion": "2.0", 
           "localUri": "localService/metadata.xml" 
          } 
         } 
        }, 
        ... 
        "sap.ui5": { 
         ... 
         "models": { 
          "": { 
           "dataSource": "localService", 
           "preload": true 
          } 
         } 
         ... 
        } 
    } 
    

Если вы не хотите, чтобы модель, которая будет связана автоматически, вы должны сделать это в вашем контроллере. В противном случае установите enableAutoBinding на true.

Также убедитесь, что ваша служба предоставляет по крайней мере минимально необходимые аннотации в $metadata (как в приведенном выше примере SAPUI5 Explored).

  • $metadata (определено в metadata.xml при использовании MockServer, сравнить metadata.xml:3938 разведанные пример в)

    <!-- Default columns shown by Smart Table --> 
    <Annotations Target="<Namespace>.<Entity (NOT EntitySet)>" xmlns="http://docs.oasis-open.org/odata/ns/edm"> 
        <Annotation Term="com.sap.vocabularies.UI.v1.LineItem"> 
         <Collection> 
          <Record Type="com.sap.vocabularies.UI.v1.DataField"> 
           <PropertyValue Property="Value" Path="<Property1>" /> 
          </Record> 
          <Record Type="com.sap.vocabularies.UI.v1.DataField"> 
           <PropertyValue Property="Value" Path="<Property2>" /> 
          </Record> 
         </Collection> 
        </Annotation> 
    </Annotations> 
    
+0

Я обновленный код XML и удалили «tableBindingPath = OData 2 Название модели definded в Menifest.json ' раздел. Также я добавил 'enableAutoBinding = true'. Но я все еще не вижу данных. Я упомянул Model в «manifest.json», и модель может быть доступна из контроллера, потому что я могу получить модель с этим кодом «var oModel = this.getView(). GetModel (МОДЕЛЬНОЕ ИМЯ)». @marcelbrueckner –

+0

Если вы хотите связать именованную модель вместо стандартной по умолчанию (которая является моделью «без имени» (пустая строка) ниже пути /sap.ui5/models вашего manifest.json), вы должны привязать ее к Управление SmartTable выглядит так: 'oSmartTable.setModel (oModel)'. Я соответствующим образом обновил свой ответ. – marcelbrueckner

+0

Вероятно, проблема возникает для '$ metadata'. Теперь я установил модель для SmartTable 'var oSmartTable = this.getView(). ById (« PersonSmartTable »); oSmartTable.setModel (oModel); 'но все же показывается Нет данных. Я могу видеть метаданные в сервисе, если в браузере url 'HANA_SERVICES.xsodata? $ Metadata', проверьте, но, вероятно, мне нужно сделать что-то еще для аннотаций. Мне непонятно, нужно ли мне создавать файл metadata.xml и загружать локально, как вы показали? Можете ли вы предоставить некоторую ссылку/код, который может мне помочь. –

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

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