SmartTable与OData服务绑定

时间:2017-01-03 13:20:09

标签: sapui5

我正在尝试将SmartTable与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="{myODataModel>/DataSetInODataService}"

任何人都可以为我提供示例代码吗?

1 个答案:

答案 0 :(得分:0)

几乎所有东西的最佳资源&#34; SAPUI5标准&#34;相关的是SAPUI5 Explored应用程序。如果您搜索&#34;智能表&#34;您还会找到this样本。

在那里,您会看到他们没有使用tableBindingPath属性,但确实将模型绑定到SmartTable的父视图(请参阅示例&#39; s SmartTable.controller.js)。 然后,SmartTable足够智能,可以使用您指定的entitySet视图模型。

如果您将manifest.json中的OData模型定义为标准模型,那么它应该已经绑定到您的视图并删除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(如果使用MockServer,则在metadata.xml中定义,比较已探索的示例&#39; s 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>