在我的应用程序(ExtJS 5.0.1)中,我尝试使用带有自定义/硬编码fiters的gridfilters插件和快捷按钮(以及树中)的网格。
我能够部分模仿设备并清除过滤器,但我遇到了以下问题:
1-当我通过grid.filters.store.addFilter(..)
设置过滤器时,列标题的样式不会更改为粗体,并且网格过滤器复选框保持未选中状态。
2-与1相同但反转...首先我在列上设置过滤器,当我清除过滤器时,列保持粗体,但在这种情况下,复选框被清除(应该如此)。
3-当我使用摘要功能'有时'总数未更新
所以,我的问题是: 有没有一种正确的方法来编程设置/清除模仿gridfilter插件的过滤器?
我已经设置了一个最小的小提琴来模拟这个。
https://fiddle.sencha.com/#fiddle/akh
最诚挚的问候, Ricardo Seixas
答案 0 :(得分:4)
只需在列上使用过滤器实例:
var column = grid.columnManager.getColumns()[0];
column.filter.setValue('J');
column.filter.enable();
答案 1 :(得分:1)
对于列表过滤器,使用以下覆盖来启用setValue方法:
//Enable setting filter values in list filters
Ext.define('Ext.ux.fixed.ListFilter', {
override: 'Ext.grid.filters.filter.List',
setValue: function(values) {
var me = this, len = values.length;
if(!values) {
me.callParent();
return;
}
if(!me.menu){
me.createMenu();
}
me.filter.setValue(values);
if (len && me.active) {
me.updateStoreFilter(me.filter);
} else {
me.setActive(!!len);
}
}
});
答案 2 :(得分:0)
您可以直接更改GridFilter.css文件中的样式:
<link rel="stylesheet" type="text/css" href="js/lib/ext-4.2.1.883/ux/grid/css/GridFilters.css" />
通过更改此元素:
.ux-filtered-column {
font-style: italic;
font-weight: bold;
background: #56b8ff;
}
希望这有帮助。
答案 3 :(得分:0)
在最新版本(5.1)中,Ext的ChainedStore对我来说效果很好。