我有一个ext.form.Combobox对象,由ext.data.JsonStore动态填充。用户可以键入搜索键以筛选列表,并选择其中一个筛选选项。我希望下拉菜单中的一个可点击选项为“全部”。如何使此选项始终显示在动态ComboBox列表中?它现在的设置方式,只有在用户开始在搜索字段中输入“a..l..l ..”时才会显示。
是否有可以申请的搜索字词是外卡,因此无论搜索字词是什么,它都会出现?
由于
答案 0 :(得分:0)
我通常解决此问题的方法是将组合的emptyText
配置选项设置为'All'
。这样,当组合框根本没有设置值时(当它被提交到服务器时它也将提交一个空值),你可以假设用户不想在这个字段上进行过滤。 / p>
答案 1 :(得分:0)
查看一些Ext3源代码,获得所需功能的一种灵巧方法是覆盖filterBy
上的Ext.data.Store
函数,并截取该函数以允许“全部”记录通过:
Ext.ux.AllJsonStore = Ext.extend(Ext.data.JsonStore, {
filterBy: function(fn, scope) {
var allFn = Ext.util.Functions.createInterceptor(fn, function(record, id) {
if (record.data.display == "All") {
return true;
}
});
return Ext.ux.AllJsonStore.superclass.filterBy.call(this, allFn, scope);
}
});
然后,无论您在何处创建Ext.form.ComboBox
商店,请改用此商店:
var combo = new Ext.form.ComboBox({
...
store: new Ext.ux.AllJsonStore({...})
...
});
答案 2 :(得分:0)
我最终将beforeQuery属性设置为一个函数,该函数将“Search All”选项的搜索字符串值更改为当前查询。
像...这样的东西。
combobox.on('beforeQuery', function(q) {
searchStore.getAt(searchStore.getCount()-1).data.search_string = q.query
}
这适用于我的代码,因为“全部搜索”选项是添加到搜索商店的最后一个选项。否则,您需要以另一种方式访问“搜索所有”记录。