2014-10-16 70 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;