2015-06-29 21 views
0

我有一个属性网格:ExtJS的属性网格重装后呈现

periods.each(function(record){ 

var tempPropGrid = me.getView().add(
    { 
     xtype:'propertygrid', 

     width: 80, 
     header: false, 
     title: 'prop grid', 
     //for some reason the headers are not hiding, we may need to deal with this using CSS 
     //hideHeaders: true, 
     enableColumnResize: false, 
     sortableColumns: false, 
     nameColumnWidth: 1, 
     source: record.data, 
     sourceConfig: { 

      periodScrumMaster: { 
       editor: Ext.create('Ext.form.ComboBox', { 
        tdCls: 'red', 
        store: team, 
        queryMode: 'local', 
        displayField: 'personName', 
        valueField: 'personName', 

        listeners: { 
         'expand' : function(combo) { 
          var gridvalues = this.up('propertygrid').getSource(); 
          combo.getStore().clearFilter(true); 
          combo.getStore().addFilter({property: 'teamName', value: teamName}); 
          combo.getStore().addFilter({property: 'periodName', value: gridvalues.periodName}); 
          var totalFTE = team.count(); 
          console.log(totalFTE); 
          var teamStore = Ext.getStore('personPeriods'); 
          console.log('store'); 
          console.log(teamStore); 
         }, 
        }}), 
       displayName: 'Scrum Master' 
      }, 



     }, 

具有使听众:

beforerender: function(){ 

调试;

   var gridValues = this.getSource(); 
       // console.log(record); 
       //debugger; 


       // filter periods for this period only 
       periods.filterBy(function(record,id){ 
        if(record.get("periodName") === gridValues.periodName){ 
         return true; 
        }}); 

       // filter teamMembers for this period and team 
       var view = this.up(); 
       var vm = view.getViewModel(); 
       var store = vm.getStore('teamMembers'); 
       store.filterBy(function(record,id){ 
        if(record.get("periodName") === gridValues.periodName) { 
         return true; 
        }}); 
       //store.clearFilter(true); 
       store.addFilter({property: 'teamName', value: teamName}); 
       // get FTEs assigned to this team in this period by counting records 
       var resourcedFtes = store.count(); 


       // Here I check the record in the periods store to make sure the data matches up with how many resourcedFte there is an update it if required 
       // This is super bad and will need to refactor 
       periods.each(function(record,idx){ 
        var value = record.get('resourcedFte'); 
        if(value != resourcedFtes){ 
         record.set('resourcedFte',resourcedFtes); 
         record.commit(); 
         vm.data.parentController.saveParent(); 

        }}); 
       // Need to call save parent so that the record is updated when we update it above 

       //Clear everything so that we can start fresh next period 
       store.clearFilter(true); 
       //periods.clearFilter(true); 

基本上有一定的逻辑来检查数据是否正确/最新的,如果它不将更新它。这工作正常,但数据不会然后加载到网格中。为了正确加载网格,我必须刷新网格。

有没有一种方法可以调用属性网格上的刷新或重新加载方法以在if语句内再次加载数据?

回答

0

如果我理解你的问题,我会建议你编程存储代理,以便它返回整个更改的记录。
您的商店是否启用autoLoad参数?
(抱歉,我不能评论)