2014-09-22 30 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

相關問題