我正在从服务器端代理过滤数据:
id: 'projectStore',
model: 'project',
remoteSort: true,
remoteFilter: true,
autoLoad: true,
autoSync: true,
proxy: {
type: 'rest',
url: 'app/projects.php',
reader: {
type: 'json',
root: 'projects'
}
}
这是我的过滤器代码:
projectStore.clearFilter();
var comboArray = [
Ext.getCmp('projectCombo').getValue(),
Ext.getCmp('statusCombo').getValue(),
Ext.getCmp('typologyCombo').getValue(),
Ext.getCmp('donorCombo').getValue(),
Ext.getCmp('programCombo').getValue(),
Ext.getCmp('regionCombo').getRawValue(),
Ext.getCmp('cityCombo').getRawValue()
];
if (comboArray[0] != "All" && comboArray[0] != 'default combo value') {
projectStore.filter('PRJ_TYPE', comboArray[0]);
}
if (comboArray[1] != "All" && comboArray[1] != 'default combo value') {
projectStore.filter('PRJ_STATUS', comboArray[1]);
}
......等等,
当我 EXTJS 向服务器发送请求时,服务器响应是正确的,并且网格正在加载过滤数据大约2-3秒,然后它再次未经过滤!我需要对它进行过滤,直到我自己清除过滤器,我已经尝试了很多东西但是找不到解决方案。
提前谢谢你!
答案 0 :(得分:0)
这些是种族状况的症状。
由于您的商店配置为autoLoad,因此在实例化商店时会加载未加载的商店。然后立即过滤它。如果商店的未过滤负载比过滤后的负载长几秒钟,您将得到您描述的内容。
解决方案是将autoLoad设置为false并手动加载存储(如果应用过滤器时尚未自动加载)。