2014-10-16 45 views
0

我想將一個數值過濾器應用於網格中的數值列,在extjs中使用過濾器特徵。我通過使用存儲在網格中的filterdata在我的過濾器上設置值來實現此目的。在extjs中使用數字過濾器不起作用

var filterData = tablePanel.filters.getFilterData(); 
Ext.Array.each(filterData, function (filter) { 

    try { 
     var aFilter = tablePanel.filters.filters.getByKey(filter.field) 
     aFilter.setValue(filter.data.value) 
    } 
    catch (err) { 
     Util.logError('err ' + err) 
    } 
}) 

的結構看起來有點怪異,但它是解決這個bug一個黑客:

How do I apply filter in ExtJS

這工作完全,如果我的過濾器只是普通的舊字符串過濾器,但是當我有一個數字濾波器,它拋出這個消息的異常:

消息:「不能使用‘的’運營商在19938搜索‘LT’」堆: (...)

錯誤是扔在這條線:

aFilter.setValue(filter.data.value)

但問題的樣子OK的對象:

aFilter

enter image description here

過濾

enter image description here

我爲什麼不能申請數字過濾器?

回答

1

過濾數值。你必須提供比較運算符 (LT,GT,當量)

e.g到過濾器的ID,其等於3

var f = insidegrid.filters.getFilter('id'); 
f.setValue({eq:3D}); 
f.setActive;