0

ビューに 3 つのリストがあります。ストアをこれらのリストに基づいてフィルタリングする必要があります。ストアを読み込もうとすると、3 つのリストすべてに同じデータが表示されます。

これは私が試したコードです。

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 に答える