繁体   English   中英

在ExtJS中使用anyMatch搜索的ComboBox

[英]ComboBox with anyMatch search in ExtJS

我有一个带有本地过滤的远程商店的ComboBox。
通过像%query这样的第一个字符而不是默认过滤,我希望使用像%query%这样的contains / anyMatch模式进行过滤。

我尝试用问题中的答案解决这个问题: ExtJs:在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'
            }
        }
    });
});

谢谢!

只需在Ext.form.field.Combobox添加以下代码即可。 这适用于没有anyMatch属性的ExtJs 4.1。

listeners   : {
    beforequery: function(record){  
        record.query = new RegExp(record.query, 'i');
        record.forceAll = true;
    }
}

从Ext 4.2.1开始使用anyMatch配置选项。 在早期版本中,看起来你需要覆盖Ext.form.field.ComboBox doQuery方法,只是为了能够将该选项添加到你在那里找到的过滤器实例:

me.activeFilter = new Ext.util.Filter({
    root: 'data',
    anyMatch: true, // <- add this
    property: me.displayField,
    value: queryString
});

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

listeners   : {
beforequery: function(record){  
    record.query = new RegExp(record.query, 'ig');
}}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM