Extjs4 网格筛选器未提交参数值
我有一个基本的网格,并且在列中添加了一些过滤器。我像这样将它们添加到构造函数中,因为其中一些使用存储Extjs4 网格筛选器未提交参数值,extjs4,extjs4.2,Extjs4,Extjs4.2,我有一个基本的网格,并且在列中添加了一些过滤器。我像这样将它们添加到构造函数中,因为其中一些使用存储 constructor: function(config) { Ext.apply(this, { features : [{ ftype: 'filters', encode: true, local: false, filte
constructor: function(config) {
Ext.apply(this, {
features : [{
ftype: 'filters',
encode: true,
local: false,
filters: [{
type: 'string',
dataIndex: 'name'
},{
type: 'string',
dataIndex: 'priority'
},{
type: 'list',
store: Ext.getStore('adminCategory'),
dataIndex: 'adminOrg',
labelField: 'displayName'
},{
type: 'list',
store: Ext.getStore('adminClientList'),
dataIndex: 'client',
labelField: 'name',
listeners: {
activate: function(obj, eOpts) {
console.log(obj);
}
}
}]
}]
});
this.callParent(arguments);
菜单项加载很好,但是当过滤器激活并开始加载存储时,过滤器参数不存在,因此它们不会提交到服务器
我检查了存储区上的
beforeload
事件,并且filters
数组是空的(在存储所有分拣机信息的操作对象中) 过滤器功能不会将过滤器信息存储在默认过滤器所在的位置。我不知道为什么,但是没有。在找到过滤器
和分拣机
阵列的同一对象中,查看参数
属性,在参数
中应该有一个名为过滤器
的属性。它将包含过滤器。默认情况下,我相信所有过滤器都编码为json字符串,因此如果您希望将它们作为数组,则必须使用Ext.decode
是的,就是这样。我还检查了params
属性。里面没有关于过滤器的内容。给你。想知道这是否是版本4.2.1中的一个新错误:params:Object limit:25页:1排序:“[{”property:“priority”,“direction:“ASC”}]”开始:0
4.2.1的相关代码看起来与4.2相同。您确定在执行服务器调用时筛选器处于活动状态吗?可能它正在向下发送到服务器。您说您正在检查商店中的“加载前事件”。FiltersFeature
中有一个用于该事件的处理程序,即在填充过滤器数据时。您可能是在FiltersFeature
中调用onBeforeLoad
方法之前捕获它的?这里是源代码,顺便说一句。您可以从ExtJS文档访问它。我正在Chrome开发工具中检查请求,并在PHP服务器端设置了断点(测试localhost),因此确认没有发送筛选器参数。但是您是正确的,FiltersFeature
中的onBeforeLoad
在存储事件之后被调用。我第一次看到我的过滤器出现在params
字段中。由于某些原因,FiltersFeature
中的onBeforeLoad
被调用三次,而存储的beforeload
只被调用一次。第二次和第三次调用时,参数是空的。嗯,这很奇怪。我不能肯定我能帮你更多。我知道,FiltersFeature
做了一些非常奇怪和低效的事情,以至于我重写了大部分内容以改进我的应用程序(包括序列化要发送到服务器的过滤器数据的部分)。如果你能找到一把小提琴来重现这个错误,我可以试着调整它,看看我是否能找到它。