2014-09-22 65 views
3

在我的应用程序(ExtJS 5.0.1)中,我尝试使用具有自定义/硬编码的效果器的栅格过滤器插件和快捷按钮(也来自树)的栅格。如何使用gridfilters插件并以编程方式清除/设置过滤器?

我能够部分模仿设置和清除过滤器,但我有以下问题:

1 - 当我通过grid.filters.store.addFilter(..)设置过滤器列标题的样式不会更改为粗体,网格过滤器复选框保持未选中状态。

2-与1相同,但是相反...首先,我在列上设置了过滤器,当我清除过滤器时,列保持粗体,但在这种情况下复选框被清除(因为它应该)。

3-当我使用概要特征“有时”总不更新

所以,我的问题是: 有没有以编程方式设置/清除过滤器模仿gridfilter插件有道?

我已经把最小的小提琴来模拟这个。

https://fiddle.sencha.com/#fiddle/akh

最好的问候, 里卡多·塞沙斯·

回答

4

柱上只需使用过滤器实例:

var column = grid.columnManager.getColumns()[0]; 
column.filter.setValue('J'); 
column.filter.enable(); 

工作样本:http://jsfiddle.net/3be0s3d8/7/

+0

谢谢!这正是我一直在寻找的,完美无瑕的工作。为了清除过滤器(并且改变样式),我刚刚发布了'column.filter.setValue('');' – rseixas 2014-09-23 13:21:31

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; 
} 

希望这有助于。

+0

感谢您的回复,但它不仅是一个样式问题,我试图发现的是如何触发/以编程方式调用gridfilter插件已经做了什么...如何使用已编码(和工作)框架本身。 – rseixas 2014-09-22 17:52:15

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); 
     }   
    } 
}); 
0

在最新发布(5.1)Ext的ChainedStore为我工作得很好。

+1

这应该是一个评论,而不是一个答案! – ilter 2015-04-22 19:57:52

+0

示例代码可以用来补充该评论:) – gurpal2000 2015-05-03 23:12:47