Extjs Combobox存储不会过滤typeahead上的值

时间:2014-09-22 06:56:57

标签: extjs combobox

我在输入typeahead上的comboxbox时遇到问题,当我输入所需的值时,组合会正确突出显示该值,但它不会过滤商店。即使在组合框中键入一些文本后,商店也会重新加载到原始数据。

这是我的商店代码。

    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',但仍然无效。

请帮助解决这个问题

非常感谢

1 个答案:

答案 0 :(得分:2)

您的商店配置了

remoteFilter: true,

告诉商店在更改过滤器时重新加载,将过滤器配置发送到服务器,因此可以应用服务器端过滤器。

服务器发回的记录不会被客户端过滤,因为服务器应该这样做。

您是否实施了过滤器服务器端?如果是这样,那么你的过滤器代码是什么?

如果您不想过滤服务器端,请将remoteFilter设置为false。