Sapui5 使用OData服务的SmartTable绑定

Sapui5 使用OData服务的SmartTable绑定,sapui5,Sapui5,我正在尝试将SmartTable与odata服务绑定,但该表显示“无数据”。我的代码如下: 在grid表中,我使用了如下数据绑定代码 rows=“{myODataModel>/datasetionataservice}” 有谁能为我提供这方面的示例代码吗?几乎所有与“SAPUI5标准”相关的资源都是SAPUI5应用程序。如果您搜索“智能表”,您也会找到示例 在那里,您将看到他们没有使用tableBindingPath属性,而是将模型绑定到SmartTable的父视图(请参见示例的Smart

我正在尝试将SmartTable与odata服务绑定,但该表显示“无数据”。我的代码如下:


在grid表中,我使用了如下数据绑定代码

rows=“{myODataModel>/datasetionataservice}”

有谁能为我提供这方面的示例代码吗?

几乎所有与“SAPUI5标准”相关的资源都是SAPUI5应用程序。如果您搜索“智能表”,您也会找到示例

在那里,您将看到他们没有使用
tableBindingPath
属性,而是将模型绑定到SmartTable的父视图(请参见示例的
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
                }
            }
            ...
        }
    }
    
如果不希望模型自动绑定,则必须在控制器中执行此操作。否则,将
enableautobbinding
属性设置为
true

还要确保您的服务在
$metadata
中至少公开所需的最低注释(如上面链接的SAPUI5示例所示)

  • $metadata
    (在
    metadata.xml
    中定义,如果使用MockServer,请比较示例的
    metadata.xml:3938

    
    

我已经更新了XML代码,并删除了Menifest.json中定义的“tableBindingPath=Odata 2模型名”部分。我还添加了“enableAutoBinding=true”。但我仍然看不到数据。我在“manifest.json”中提到了模型,并且可以从控制器访问模型,因为我可以使用以下代码获取模型:“var oModel=this.getView().getModel(Model NAME)”@marcelbrueckner如果要绑定命名模型而不是默认模型(manifest.json的/sap.ui5/models路径下的“无名称”(空字符串),则必须将其绑定到SmartTable控件,如下所示:
oSmartTable.setModel(oModel)
。我已经相应地更新了我的答案。
$metadata
可能出现了问题。现在我已经将model设置为SmartTable
var oSmartTable=this.getView().byId(“PersonSmartTable”);setModel(oModel)但仍然没有显示任何数据。如果在浏览器url
HANA_SERVICES.xsodata?$metadata
中进行检查,我可以看到服务中的元数据,但我可能需要为注释做更多的工作。我不清楚我是否需要创建
metadata.xml
文件,是否需要如您所示加载localy?请提供一些可以帮助我的链接/代码。请看一下我在回答中添加的
$metadata
。只有在使用MockServer实例模拟OData服务(就像我正在做的那样)时,才能创建
metadata.xml
。感谢您的帮助。您是说“只有在使用MockServer实例时才必须创建metadata.xml”,这是否意味着我使用SAP HANA server使用xsodata生成odata服务,因此我不需要创建
metadata.xml
<!-- 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>