我在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上我正在调用这个设置文件管理器的方法
> 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模型是因为它吗?如果是这样的话,你可以指点我的代码
答案 0 :(得分:0)
应用$ filter选项对您的服务执行Odata请求。很可能您会发现您的服务根本没有过滤。
您可以通过ABAP代码或在Gateway中配置UI2 Odata缓存来添加过滤。
答案 1 :(得分:0)
我使用了以下语句,利用了搜索字段的&#34; search&#34; -event:
<SearchField
search="handleSearch"
width="100%" >
</SearchField>
with handlesearch beeing my search handler 我在某处读过liveChange事件默认设置为false / inactive ...我认为有一个函数可以检查它...