我正在尝试将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}"
任何人都可以为我提供示例代码吗?
答案 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>