我在XML视图中使用搜索字段。
<Page title="Title">
<subHeader>
<Toolbar>
<SearchField
liveChange="onSearch"
width="100%" />
</Toolbar>
</subHeader>
<content>
<List id = "oProductList" items="{/formset}" select="whencliekedonlist" mode="SingleSelectMaster">
<items>
<StandardListItem title="{orderno}"
description="{date}">
</StandardListItem>
</items>
</List>
</content>
</Page>
在视图的Init方法上,我声明odata模型
onInit: function() {
//Declaring the model
var oProductModel = new sap.ui.model.odata.ODataModel("/sap/opu/odata/SOL/TEST_SRV");
sap.ui.getCore().setModel(oProductModel);
debugger;
},
我正在屏幕分割应用程序主页中列出订单号。
现在在livesearch上,我调用这个方法来设置filers
> debugger;
> // add filter for search
> var aFilters = [];
> var sQuery = oEvt.getSource().getValue();
> if (sQuery && sQuery.length > 0) {
> //here name is the field on which the filter has to be done.
> var filter = new sap.ui.model.Filter("orderno", sap.ui.model.FilterOperator.Contains, sQuery);
> aFilters.push(filter);
> }
>
>
>
> // update list binding
>
> var list = this.getView().byId("oProductList");
> var binding = list.getBinding("items");
> binding.filter(aFilters);
问题:我没有过滤结果。当我过滤时什么也没发生。我使用odata模型是因为它吗?如果是的话,如何继续?你能给我指一下代码
使用$filter选项对您的服务执行Odata请求。你很可能会发现你的服务根本没有过滤。
您可以通过ABAP代码或在Gateway中配置UI2 Odata缓存来添加筛选。
我利用searchfield的"search"-事件使用了以下语句:
<SearchField
search="handleSearch"
width="100%" >
</SearchField>
handlesearch是我的搜索处理程序我在某个地方读到liveChange事件默认设置为false/inactive。。。我认为有一个函数可以检查它…