2017-01-17 1 views
-1

Фильтр, использующий нижеследующий код, не работает. Я создал приложение, используя шаблон из Web IDE, а затем привязал OData к списку в XMLView, применяя фильтр для поиска.Фильтрация данных в UI5

Вид:

<SearchField liveChange="onSearch" id="master1SearchField" search="onSearch"/> 
<List id="master1List" items="{path:'/DetailsSet'}"> 
    <items> 
     <ObjectListItem id="master1ListItem"> 
      <attributes> 
       <ObjectAttribute text="{Name}"/>        
      </attributes> 
     </ObjectListItem> 
    </items> 
</List> 

Контроллер:

onSearch : function(oEvent) { 
    var sFilteredValue = oEvent.getSource().getValue(); 
    var oFilter = new sap.ui.model.Filter("Name", sap.ui.model.FilterOperator.Contains, sFilteredValue); 
    var oElement = this.getView().byId("table"); 
    var oBinding = oElement.getBinding("items"); 
    oBinding.filter([oFilter]);    
} 
+0

Если вы переключитесь в режим отладки, вы должны увидеть на сетевой вкладке запрос фильтра на бэкэнд и его ответ. Это работает? Как это выглядит? Если вы находитесь в отладчике, что значение «sFilteredValue» здесь: «вар sFilteredValue = oEvent.getSource() ПолучитьЗначение();» Пожалуйста, сравните также с кодировкой образца в: https: // sapui5.hana.ondemand.com/explored.html#/sample/sap.m.sample.ListSelectionSearch/code/List.controller.js –

+0

Вы применяете фильтр к правильному управлению? Идентификатором вашего 'oElement' является' 'table", тогда как список имеет идентификатор '' master1List''. – boghyon

+0

Что возвращается сюда? 'var sFilteredValue = oEvent.getSource(). getValue();' – neeko

ответ

-1

Попытка заставить обновление управления после установки фильтра:

oBinding.refresh(true); 
+0

Это не дает ответа на вопрос. После того, как у вас будет достаточно [репутации] (http://stackoverflow.com/help/whats-reputation), вы сможете [прокомментировать любое сообщение] (http: // stackoverflow.com/help/privileges/comment), вместо этого [предоставить ответы, которые не требуют разъяснений у аськи) (http://meta.stackexchange.com/questions/214173/why-do-i-need-50 -reputation-to-comment-what-can-i-do-вместо этого) - [Из обзора] (/ review/low-quality- сообщений/15605204) – Robert

1

Вам нужно получить связывание элементов на которые должен применяться фильтр.

var oElement = this.getView().byId("master1List"); 

должен решить проблему.

Смежные вопросы