2

我有一个带有本地过滤的远程存储的组合框。我想使用 contains/anyMatch 模式(
如.%query%query%

我试图用问题中的答案来解决这个问题:ExtJs: Search / Filter within a ComboBox,但没有奏效。

代码:

var users = Ext.create('Ext.form.ComboBox',{
    displayField : 'userName',
    valueField : 'userName',
    queryMode : 'local',
    typeAhead : true,
    store : Ext.create('Ext.data.Store', {
        model   : 'User',
        proxy       : {
            type    : 'ajax',
            url     : './user/list',
            reader  : {
                type: 'json',
                root: 'data'
            }
        }
    });
});

谢谢!

4

3 回答 3

8

只需在Ext.form.field.Combobox. 这适用于没有该anyMatch属性的 ExtJs 4.1。

listeners   : {
    beforequery: function(record){  
        record.query = new RegExp(record.query, 'i');
        record.forceAll = true;
    }
}
于 2013-06-18T16:45:48.233 回答
7

从 Ext 4.2.1 开始使用anyMatch配置选项。在早期版本中,您似乎需要覆盖doQuery方法,Ext.form.field.ComboBox以便能够将该选项添加到您将在其中找到的过滤器实例:

me.activeFilter = new Ext.util.Filter({
    root: 'data',
    anyMatch: true, // <- add this
    property: me.displayField,
    value: queryString
});
于 2013-06-14T14:44:36.417 回答
3

对于全局搜索,修饰符g更重要。i仅用于不区分大小写的搜索。

listeners   : {
beforequery: function(record){  
    record.query = new RegExp(record.query, 'ig');
}}
于 2015-08-27T07:17:07.547 回答