0

我在一个视图中有三个列表。我需要根据这些列表过滤商店。当我尝试加载商店时,所有三个列表都会出现相同的数据。

这是我试过的代码。

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);

请帮我找出解决方案。

4

1 回答 1

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
于 2013-10-30T10:01:32.243 回答