Extjs 7.4.0 gridfilterbar远程过滤filter操作符不生效问题咨询
ExtJS 7.4.0 gridfilterbar远程过滤自定义操作符不生效问题解答
你的过滤配置写法完全符合官方文档规范,不存在配置遗漏问题,该现象是ExtJS 7.4.0版本的原生官方bug。
问题根因
- gridfilterbar组件在初始化过滤器、应用用户自定义的
operators配置时,仅将选中的操作符赋值给了过滤器实例的私有属性_operator,没有同步更新实例的config.operator配置项 - 默认
Ext.data.proxy.Server的encodeFilters方法调用过滤器的serializeTo方法序列化过滤参数时,优先读取的是config.operator的值,因此永远会返回该过滤类型的默认操作符,忽略用户自定义配置的操作符。
修复方案说明
你目前重写encodeFilters手动同步config.operator的方案是可行的临时补丁,除此之外还有两种更轻量的处理方式:
- 重写
Ext.util.Filter的取值逻辑,优先读取实际生效的_operator属性,无需每次编码过滤器时遍历修正
Ext.override(Ext.util.Filter, { getOperator: function() { return this._operator || this.config.operator; } });
- 若项目支持框架版本升级,可直接升级到ExtJS 7.5.0及以上版本,该bug已在后续版本中被官方修复,无需额外自定义修改。
内容的提问来源于stack exchange,提问作者pan4gi0t1s
相关产品推荐
相关产品推荐

