2014-09-22 4 views
0

У меня возникли проблемы с фильтрацией comboxbox на typeahead, когда я ввожу нужное значение, которое я хочу, комбо подсвечивает значение правильно, но оно не фильтрует хранилище. Магазин перезагружается до исходных данных даже после ввода некоторого текста в поле со списком.Extjs Combobox store не фильтрует значения на typeahead

Вот мой код для магазина.

Ext.define('Dashboard.store.Rule', { 
     extend: 'Ext.data.Store', 
     model: 'Dashboard.model.Rule', 
     storeId : 'Rule', 
     pageSize: 35, 
     autoSync : false, 
     autoLoad: true, 
     remoteFilter: true, 
     sorters : ['ruleName'], 
     proxy: { 
      type: 'ajax', 
      api: { 
        read : 'rule/view.action', 
        create : 'rule/create.action', 
        update: 'rule/update.action', 
        destroy: '' 
      }, 
      reader: {     //reads the data in the JSON Format 
        type: 'json', 
        root: 'data', 
        successProperty: 'success' 
      }, 
      writer: { 
         type: 'json',   //writes the data in the JSON Format 
         writeAllFields: true, 
         encode: true, 
         root: 'data' 
      }, 
      listeners: {    //Exception Handler for the Ajax Request 
         exception: function(proxy, response, operation){ 

         var error = Ext.decode(response.responseText); 
         Ext.MessageBox.show({ 
            title: 'REMOTE EXCEPTION', 
            msg: error.message, 
            icon: Ext.MessageBox.ERROR, 
            buttons: Ext.Msg.OK 

         }); 
        } 
       } 
     } 
    }); 

А ниже мой код для выпадающего списка в связи

xtype: 'combobox', 
    id : 'ruleName', 
    padding : '10 30 10 20', 
    fieldLabel: '<html><font color = "red">*</font></html>Rule Name', 
    store: 'Rule',  
    width: screen.width*0.22, 
    emptyText: 'Select Rule', 
    typeAhead : true, 
    allowBlank: false, 
    queryMode: 'remote', 
    lastQuery:'', 
    displayField: 'ruleName', 
    disabled : true, 
    maxLength: 100, 
    maxLengthText: 'Maximum text size allowed 100', 
    listeners : { 
      'change' : function(){ 
          //TODO 
      }, 
      'blur' : function(){ 
         //TODO 
      } 

    } 

Я также попытался положить triggerAction : 'all', но до сих пор ничего не работает.

Пожалуйста помощь по этому вопросу

Большое спасибо

+0

Поскольку вы активировали remoteFilter, ваш фильтр должен быть на сервере. Я бы предположил, что вы не реализовали какой-либо фильтр на сервере, не так ли? – Alexander

+0

Да Александр Я не внедряю remoteFilter, но onload Я привожу все данные с сервера. Но я не могу понять, почему он запускает запрос ajax с каждым символом, который я печатаю. Мне не хватает какого-либо свойства конфигурации, которое является обязательным для этой ситуации. Просьба помочь .. –

+0

Вы сказали ему ** явно ** использовать такое поведение, указав 'remoteFilter: true'. – Alexander

ответ

2

Ваш магазин настроен

remoteFilter: true, 

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

Записи, отправленные сервером, не фильтруются клиентом, так как сервер должен был это сделать.

Вы реализовали сервер фильтра? Если да, то какой у вас код фильтра?

Если вы не хотели фильтровать серверную сторону, установите для remoteFilter значение false.

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