按照此示例http://dev.sencha.com/deploy/ext-4.1.0-gpl/examples/form/forum-search.html
我可以在我的组合框中应用自动完成功能,使用php / postgresql查询检索名称然后:
{
xtype: 'combo',
store: ds,
hideTrigger:true,
typeAhead: false,
id: 'search_input_text',
width: 187,
queryMode: 'remote',
hideLabel: true,
queryParam: 'query',
displayField: 'first_name',
valueField: 'first_name',
listConfig: {
loadingText: 'Loading...',
getInnerTpl: function() {
return '{first_name}';
}}
listeners: {
buffer: 50,
change: function() {
var store = this.store;
store.clearFilter();
store.filter({
property: 'first_name',
anyMatch: true,
value : this.getValue()
});
}
}
}
现在,我需要编辑它以让用户输入学生的名字或姓氏,然后输入的每个名字(第一个或最后一个)将显示在组合框中。
因此,我编辑了查询以使其检索名称:
SELECT first_name, last_name FROM students WHERE first_name ILIKE '%$query%' OR last_name ILIKE '%$query%' ";
和
displayField: 'first_name'+'last_name',
valueField: 'first_name'+'last_name',
return '{first_name}'+'{last_name}';
store.filter({
property: 'first_name',
anyMatch: true,
value : this.getValue()
},
{
property: 'last_name',
anyMatch: true,
value : this.getValue()
}
但是,它仍然只根据用户类型检索名字, 请注意,如果我单独使用它:
store.filter({
property: 'last_name',
anyMatch: true,
value : this.getValue()
});
它仅适用于姓氏。
答案 0 :(得分:0)
您可以将多个过滤器应用于数据存储,如下所示:
var filters = [
new Ext.util.Filter({
filterFn: function(item){return item.get('first_name') == this.getValue() || item.get('last_name') == this.getValue();
}
})
];
store.filter(filters);
上面的代码块只是关于如何在同一个字段中应用多个过滤器的想法。注意双管“||”。你可以使用“&&”根据您的需要。它就像SQL查询。