我有一个简单的 sap.m.Table,它绑定到一个实体集。有一个搜索字段,使用时将对绑定进行简单的过滤并返回结果。一切正常,但由于某种原因它发送了 2 个 oData 请求,两者都具有不同的分页属性,我不知道为什么??
XML:
<Table id="tabJobs" items="{/JobSet}" beforeOpenContextMenu="onBeforeOpenContextMenu" alternateRowColors="true" busy="{config>/busy}" busyIndicatorDelay="0" sticky="HeaderToolbar,ColumnHeaders">
<headerToolbar>
<Toolbar>
<SearchField id="sfHeader" width="20%" placeholder="Search..." search=".onSearchJobs" showRefreshButton="true" value="{config>/searchField}"/>
</Toolbar>
</headerToolbar>
...
</Table>
控制器:
onSearchJobs: function(oEvent) {
var oFilter = [];
oFilter.push(new Filter("SearchField", FilterOperator.EQ, oEvent.getSource().getValue()));
this.byId("tabJobs").getBinding("items").filter(oFilter);
}
清单:
"": {
"dataSource": "projects",
"preload": false,
"settings": {
"defaultCountMode": "Inline",
"defaultBindingMode": "TwoWay",
"refreshAfterChange": true,
"defaultUpdateMethod": "MERGE",
"useBatch": true,
"defaultOperationMode": "Server"
}
},
o数据调用:
1st one: GET JobSet?$skip=0&$top=100&$filter=SearchField eq 'test'&$inlinecount=allpages
2nd one: GET JobSet?$skip=2&$top=98&$filter=SearchField eq 'test'&$inlinecount=allpages
所以问题与 UI5 无关,而是与后端(ECC)相关。后端开发人员实现了 $skiptoken,看似不正确,这导致前端发送第二次调用:
lv_handle = io_tech_request_context->get_skiptoken( ).
...
es_response_context-skiptoken = CONV #( lv_handle ).