myGridPanel.reconfigure(store,columns)
을 사용하여 GridPanel을 다시 구성하고 싶습니다. 메타 데이터를 별도로 호출해야하기 때문에 메타 이벤트를 사용할 수 없습니다 (백엔드 제약). 메타 데이터를 호출하고 필요한 메타 데이터를받은 다음 새 필드 집합과 새 프록시 (새 URL)가있는 새 모델을 만듭니다. 모델을 기존 저장소 (my gridPanel에 바인딩 됨)로 설정 한 다음 store.loadPage (1) (bufferedStore를 사용하기 때문에)와 myGridPanel.reconfigure (store, meta.columns)를 호출합니다. 제 문제는 store.loadPage (1)가 발생하지 않는다는 것입니다. 새 모델을 설정 한 후 Store.load()가 실행되지 않습니다.
Ext.define('Foo.store.Results', {
extend: 'Ext.data.BufferedStore',
requires: [
'Foo.model.ResultRecord'
],
config: {
remoteFilter: true
},
constructor: function(cfg) {
var me = this;
cfg = cfg || {};
me.callParent([Ext.apply({
pageSize: 50,
storeId: 'Results',
autoLoad: false,
model: 'Foo.model.ResultRecord',
leadingBufferZone: 50,
trailingBufferZone: 10
}, cfg)]);
}
});
은이 같은 새로운 모델을 만들 : 내가 놓친 거지 모르겠어요 ...
내 상점은 다음과 같습니다
createResultModel: function(url,fields) {
console.log('createResultsModel called');
return Ext.define('Foo.model.ResultsModel'+Ext.id(), {
extend: 'Ext.data.Model',
fields: fields,
proxy: {
type: 'ajax',
url: url,
useDefaultXhrHeader: false,
reader: {
type: 'json',
rootProperty: 'data'
}
}
});
}
을 그리고 모델을 변경하고 다음과 같이 그리드를 다시 구성하십시오 :
myStore.setModel(me.createResultModel('resources/data/results.json',meta.fields));
myStore.loadPage(1);
resultsGrid.reconfigure(myStore,meta.columns);
고마워요!
당신은 그리드에 붙이는'myStore'가 아니라'metaStore'에게 다시로드하라고 말하고 있습니다. 그게 맞습니까? –
새 모델을 만들 필요가 없습니다. store.setFields()와 store.getProxy(). setUrl()를 사용할 수 있습니다. –
@Evan Trimboli 죄송합니다, 편집 실수였습니다. 그것은 실제로 myStore입니다. 코드를 업데이트했습니다. – ddragos