我在视图中有三个列表。我需要在某些基础上过滤存储到这些列表。当我尝试加载存储时,所有三个列表都会出现相同的数据。
这是我试过的代码。
var SStore = Ext.getStore('mystore');
SStore.clearFilter(true);
SStore.filter('status', '1');
Ext.getCmp('list1').setStore(SStore);
var BStore = Ext.getStore('mystore');
BStore.clearFilter(true);
BStore.filter('sattus', '2');
Ext.getCmp('bluetbl').setStore(BStore);
var RStore = Ext.getStore('mystore');
RStore.clearFilter(true);
RStore.filter('status', '3');
Ext.getCmp('redtbl').setStore(RStore);
请帮我找出解决方案。
答案 0 :(得分:1)
每次调用Ext.getStore('mystore');你获得了商店的相同实例,而不是副本。这意味着您的所有表将与您应用的最后一个过滤器共享同一个商店。你应该为每个网格使用不同的商店。
之类的东西var SStore = Ext.getStore('mystore');
SStore.clearFilter(true);
SStore.filter('status', '1');
// ATTENTION Ext.getCmp('list1').setStore(SStore); the setStore method doesn't exist!
// instead you have to create your grid with SStore as store
var grid = new Ext.grid.GridPanel({store: SStore, autoLoad: false});
//autoLoad: false gives you control of the load
SStore.load(); // now the first grid gets populated
var BStore = Ext.getStore('mySecondStore');
BStore.clearFilter(true);
BStore.filter('status', '2'); //check the spelling of status
//Ext.getCmp('bluetbl').setStore(BStore); no..
//create your bluetbl grid with BStore as store
var secondGrid = new Ext.grid.GridPanel({store: BStore, autoLoad: false});
//autoLoad: false gives you control of the load
BStore.load(); // now the second grid gets populated