在上一篇文章(解决ext grid过滤问题)中我以为已经解决了所有的过滤问题,但是过了几天才发现,关于数字的过滤还不自动清除,所以经过对过滤源文件NumericFilter.js的调试,发现serialize这个方法出问题了,当有需要过滤的数字时它会通过
for(var key in values)
args.push({type: 'numeric', comparison: key, value: values[key]});
这个循环向args数组对象中赋值,从而在过滤主文件GridFilters.js中的getFilterData方法中的var d = [].concat(f.serialize());这个段代码,d的length才可以不为0,进行下面for循环的赋值。
但是当清除数字的过滤后,在NumericFilter.js中就不会走那个for循环,从而ars为null,故在GridFilters.js中就不能给赋空值。
所以我在NumericFilter.js中的serialize方法中for循环的下面我加了这段代码
if(args == "")
args.push({type: 'numeric', comparison: 'aa', value: ''});
给他附一个不影响结果的值,总之到后台也会过滤掉的,所以不影响程序的,从而解决了问题。