Grid Filter リストを動的に設定しようとすると、奇妙な問題が発生します。
私のコードスニペットで説明しましょう
フィルターリストが次のように定義されている列があります
{
text : 'Client',
dataIndex : 'topAccount',
itemId : 'exTopAccount',
filter: {
type: 'list',
options:[]
}
}
「viewready」のストアからリストを初期化します
viewready: function(cmp,eOpts){
cmp.getHeaderCt().child('#exTopAccount').initialConfig.filter.options = clientsStore.collect('topAccount');
}
===>うまくいく
ここで、ユーザーが次のページに移動したときに、レコードに基づいて新しいクライアント ストアを構築する必要があります。したがって、ページングの「変更」イベントでストアを構築します
listeners: {
'change' :function( toolbar, pageData, eOpts ) {
var store = Ext.StoreManager.get('ExceptionRecords');
clientsStore.removeAll(true);
store.each(function(record){
if(clientsStore.findRecord('topAccount',record.data.topAccount.trim()) == null ) {
clientsStore.add({topAccount: record.data.topAccount.trim()})
}
})
Ext.getCmp('exceptionGridContainer').view.refresh;
Ext.getCmp('exceptionGridContainer').view.getHeaderCt().doLayout;
console.log(clientsStore);
Ext.getCmp('exceptionGridContainer').view.getHeaderCt().child('#exTopAccount').initialConfig.filter.options = clientsStore.collect('topAccount');
}
}
clientStore に新しいデータが表示されるようになりました。ただし、グリッド フィルター リストは更新されません。まだ古いデータを表示しています。リフレッシュ、レイアウトなどを試しましたが、何も役に立ちません
どんな助けでも大歓迎です
ありがとうタラハン