2015-01-29 1 views
0

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

고마워요!

+0

당신은 그리드에 붙이는'myStore'가 아니라'metaStore'에게 다시로드하라고 말하고 있습니다. 그게 맞습니까? –

+0

새 모델을 만들 필요가 없습니다. store.setFields()와 store.getProxy(). setUrl()를 사용할 수 있습니다. –

+0

@Evan Trimboli 죄송합니다, 편집 실수였습니다. 그것은 실제로 myStore입니다. 코드를 업데이트했습니다. – ddragos

답변

0

store.load()가 호출되었지만 잘못된 URL이있는 것 같습니다. 그것이 원하는 기능인지는 모르겠지만 이전 모델의 프록시가 상점에 설정되어 있고 새 모델을 설정할 때 프록시가 이전 버전으로 남아있는 것으로 보입니다.

관련 문제