在SAPUI5列表中绑定OData属性

时间:2019-02-07 08:49:23

标签: odata sapui5

我在网关项目中创建了一个EntityType。如何将该值绑定到SAPUI5中的列表?

<List id="id1" mode="{path: 'ODataManifestModel>EntitySetForBoolean', formatter: 'Formatter.formatForBoolean'}"" 
            items="{..}"

enter image description here

因此我在清单JSON中定义了网关服务,并将其称为ODataManifestModel。现在,我想从booleanProperty绑定该值,并根据该值更改列表的模式。我很清楚该怎么做,但是我认为我没有正确地绑定它。因为这样我不确定前端如何知道我将使用该特定属性。我也尝试过这样的事情:

<List id="id1" mode="{path: 'ODataManifestModel>EntitySetForBoolean>booleanProperty', formatter: 'Formatter.formatForBoolean'}"" 
            items="{..}"

但是那也不起作用,我在这里做错了吗?

3 个答案:

答案 0 :(得分:1)

'ODataManifestModel>EntitySetForBoolean>booleanProperty'

几件事:

  • 您的屏幕截图可能是错误的,因为您始终需要可以在“文件夹” Entity Sets而非Entity Type中找到的entitySet名称。虽然您的名字看起来正确。
  • 您必须将实体集(数组)的一个元素绑定到mode属性,并使用SEGW中定义的键来指定它->您的实体类型至少需要一个键字段。您无法使用索引访问OdataModel中的oData entitSet元素
  • 如果要引用entitySet,则需要一个绝对路径,这意味着在model>之后,它必须以/开头。或者,在元数据加载后,在控制器的init方法中,将一个元素绑定到整个视图 var that = this; this.getOwnerComponent().getModel().metadataLoaded().then(function() { that.getView().bindElement({path:"/EntitySetForBoolean('1234')" }); })以在视图中使用相对绑定(而不以/开头)
  • 结构中的路径使用/而不是>

绝对绑定:

"ODataManifestModel>/EntitySetForBoolean('1234')/booleanProperty"

或者如果元素绑定到视图或视图中的父容器对象,则可以使用相对路径:

"ODataManifestModel>booleanProperty"

答案 1 :(得分:0)

ListBase的

mode 属性可以具有以下属性( None,SingleSelect,MultiSelect,Delete ),并将其应用于所有列表元素

答案 2 :(得分:0)

假设您的服务通过URL与此类似,则您的问题Northwinds oData V2中没有提供示例数据。

Open preview in external window

这里使用的是Products实体集。

//manifest.json
"dataSources": {
  "ODataManifestModel": {
    "uri": "path_to_your_service",
    "type": "OData",
    "settings": {
      "odataVersion": "2.0",
      "localUri": "",
      "annotations": []
    }

  },


  ..."models": {
    "ODataManifestModel": {
      "type": "sap.ui.model.odata.v2.ODataModel",
      "settings": {
        "defaultOperationMode": "Server",
        "defaultBindingMode": "TwoWay",
        "defaultCountMode": "None",
        "useBatch": false
      },
      "dataSource": "ODataManifestModel"
    },
    ..
  }
//view.xml
<mvc:View controllerName="sap.otuniyi.sample.Master" xmlns:mvc="sap.ui.core.mvc" xmlns:core="sap.ui.core" xmlns="sap.m" xmlns:semantic="sap.m.semantic">
  <semantic:MasterPage id="page" title="Contents">
    <semantic:content>
      <List items="{ODataManifestModel>/Products}" mode="SingleSelectMaster" noDataText="No Data Available" growing="true" growingScrollToLoad="true" selectionChange="onSelectionChange">
        <items>
          <ObjectListItem title="{ODataManifestModel>ProductName}" type="Active" icon="sap-icon://user-settings" press="onSelectionChange" />
        </items>
      </List>
    </semantic:content>
  </semantic:MasterPage>
</mvc:View>