我想过滤来自商店的结果,如下所示。
我有textbox
如果我在其中写任何内容,那么它应该相应地过滤存储。
例如商店结果是
Monday
Tuesday
Wednesday
Thursday
过滤器应该像我输入Mon
一样,那么结果应该只是Monday
。
我尝试了以下代码,但没有运气。
items: {
xtype: 'textfield',
name: 'value',
width : '100%',
align: 'center',
margin: '0 2 2 2',
listeners : {
change: function(field, newValue, oldValue, eOpts) {
var gridRecords = Ext.getCmp('Grid').getStore();
gridRecords.filter({
property: 'value',
value: newValue,
anyMatch: true,
caseSensitive: false
});
}
}
}
感谢。
答案 0 :(得分:1)
如果您使用的是ExtJS 4,则需要清除之前的过滤器。正如文档所述,任何过滤器都应用于前一个过滤器。因此,在过滤商店电话gridRecords.clearFilter()
之前。
这是一个有效的JSFiddle供您查看。
答案 1 :(得分:0)
不是在过滤器中使用对象,而是像这样传递值:
gridRecords.filter('value',newValue,true,false);
答案 2 :(得分:0)
以下代码会按照您的要求过滤商店,并且不区分大小写。您也可以键入字符串的任何部分,例如' es'商店将过滤显示“周二”和“周二”。和'星期三'
items: {
xtype: 'textfield',
name: 'value',
width : '100%',
align: 'center',
margin: '0 2 2 2',
listeners : {
change: function(field, newValue, oldValue, eOpts) {
var gridRecords = Ext.getCmp('Grid').getStore();
gridRecords.filterBy(function(record){
var value = record.get('value').toLowerCase();
return (value.indexOf(newValue.toLowerCase()) != -1);
})
}
}
}