我有一个带有本地过滤功能的远程商店的ComboBox
我希望使用像%query
这样的contains / anyMatch模式进行过滤,而不是使用%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'
}
}
});
});
谢谢!
答案 0 :(得分:8)
只需在Ext.form.field.Combobox
中添加以下代码即可。这适用于没有anyMatch
属性的ExtJs 4.1。
listeners : {
beforequery: function(record){
record.query = new RegExp(record.query, 'i');
record.forceAll = true;
}
}
答案 1 :(得分: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
});