将商店过滤器加载到多个列表

时间:2013-10-30 09:25:20

标签: extjs sencha-touch sencha-touch-2 sencha-touch-2.1

我在视图中有三个列表。我需要在某些基础上过滤存储到这些列表。当我尝试加载存储时,所有三个列表都会出现相同的数据。

这是我试过的代码。

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

请帮我找出解决方案。

1 个答案:

答案 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