2012-01-11 1 views
0

재구성 기능을 사용하여 패널 양식 의 열과 데이터를 변경하고 있습니다.페이징 저장소가 변경되지 않았습니다.

는 코드가 작동 내가

var newStore = Ext.create('Ext.data.Store', { 
     fields: tmpFields, 
     pageSize: itemsPerPage, 
     proxy: { 
      type: 'ajax', 
      url: getDataWithPageURL, 

     } 
    }); 


    globalStore = newStore.load({ 
     params: { 
      start: 0, 
      limit: itemsPerPage 
     } 
    }); 

    grid.reconfigure(globalStore, tmpColumns); 

을 쓴 코드를 아래 참조, 데이터가 변경됩니다. 그러나 페이징 및 합계는 이전 데이터를 표시합니다.

도와주세요.

답변

0

재구성 기능의 버그라고 생각합니다.

그래서 난장이 막대를 만들고 다시 추가했습니다. PagingToolbarStore 주어진와 긴밀하게 협력하고, ExtJS로에서

var PagingBar = Ext.create('Ext.PagingToolbar', { 
     pageSize: itemsPerPage, 
     store: globalStore, 
     dock: 'bottom', 
     displayInfo: true 
    }); 

    grid.removeDocked(grid.getDockedItems()[1]); 

    grid.addDocked(PagingBar); 
1

아래 코드를 참조하고,이 Ext.panel.Table에 정의 된 reconfigure 때문에 reconfigure에 걸려 더 이벤트 리스너가없는 이유이다.

따라서, 또 다른 해결책은 reconfigure가 실행되었을 때 매장 리 바인딩하는 것이다, 즉 다음 PagingToolbar가 렌더링 된 후, 우리가 해당 이벤트 reconfigure에 함수를 바인딩으로서

Ext.define('NS.toolbar.Paging', { 
    extend: 'Ext.toolbar.Paging', 
    initComponent: function() { 
     var me = this; 
     me.callParent(); 
     me.on('afterrender', function() { 
      me.ownerCt.on('reconfigure', function() { 
       me.bindStore(me.ownerCt.store || 'ext-empty-store', true); 
      }); 
     }); 
    } 
}); 

가 읽을 reconfigure이 발생할 때마다 페이징 도구 모음에서 저장소를 리 바인드합니다.

테스트를 거쳤습니다. Try it out here at jsfiddle

환호

+0

나는 이미 그것을 siolved. 도와 주셔서 감사합니다 –