Extjs 4.1 Grid Store'sum'函数保持计算值

时间:2013-03-28 05:23:16

标签: extjs4.1 jsonstore

我有一个网格,我需要对列执行'sum'操作并在文本框中显示这些值。 我正在尝试使用商店的'sum'功能。它工作正常,但是当我销毁这个商店时,它仍然在文本字段中保留计算值,但不在网格中。如果再次我摧毁这家商店然后它干净。 任何人都可以指导可能出现的问题吗?

提前致谢。

我的网格是

Ext.define('${pkgName}.v01t007001.SV01T00700105' , {
extend    : 'Ext.grid.Panel',
alias     : 'widget.sv01t00700105',  
viewConfig: {
    stripeRows    : true,
    forceFit      : true,
    loading       : true,
    emptyText     : 'No Records to display',
    listeners     : {
        viewready : function(v) {               
          var store = Ext.data.StoreManager.get('S01T008003');
            store   = !store ? Ext.create("S01T008003") : store;   
            store.load();                
        }
    }
},
features  : [{
    ftype       : 'summary',       
}],
initComponent   : function() {
    this.store='S01T008003';            
    me        = this;        
    this.columns = [{
        header      : 'STotal',
        align       : 'right',
        width       : 80,
        dataIndex   : 'total',        
        renderer    : function(value, metaData, record, rowIdx, colIdx, store, view) {                
            var subtotal  = Ext.util.Format.number(value,'0.00');                
            var total     = view.getStore().sum('total');
            var t         = Ext.util.Format.number(total,'0.00');  
            Ext.getCmp('total-t00700106').setValue(t); // It is my Text field id
            return subtotal+'&nbsp' + '?';           
        }           
    }];       
    this.callParent(arguments);
}

});

我的文字fiels

{
                            xtype     : 'textfield',
                            fieldLabel: 'Total',
                            name      : 'total',
                            id        : 'total-t00700106',
                            width     : 200

                        }

我的商店

Ext.define('${pkgName}.S01T008003', {
extend    : 'Ext.data.Store',
model     : '${appName}.model.M01T008002',
idProperty: 'id',
autoLoad  : false,
autoSync  : true,
proxy: {
    type    : 'ajax',
    noCache : true,  
    api: {
    read    : '${createLink(controller:'C01t008001', action: 'iItemStore')}',
    destroy : '${createLink(controller:'C01t008001', action: 'removeall')}'
    },
    actionMethods : {          
      read    : 'GET',
      update  : 'PUT',
      create  : 'POST',
      destroy : 'DELETE'
    },
    reader: {
        type            : 'json',
        root            : 'data',
        totalProperty   : 'total',
        successProperty : 'success',
        messageProperty : 'message',
        implicitIncludes: true
    },
    simpleSortMode  : true
},
sorters: [{
    property: 'id', 
    direction: 'asc'
}]

});

我的控制器

invResetAll : function(button){        
  iItemStore.destroy({
    callback : function(records, options, success) {
         if(success){
            console.log('if destroy success!');
            iItemStore.removeAll(true);
         }
    }        
  });  

    iItemStore.reload();
}

1 个答案:

答案 0 :(得分:3)

我是一个如此简单的愚蠢男孩

     {
        header      : 'STotal',
        align       : 'right',
        width       : 80,
        dataIndex   : 'total',        
        renderer    : function(value, metaData, record, rowIdx, colIdx, store, view)    {                
            var subtotal  = Ext.util.Format.number(value,'0.00');         
            return subtotal+'&nbsp' + '৳';           
        },
        summaryType: 'sum',
        summaryRenderer: function(value, summaryData, dataIndex) {
            Ext.getCmp('total-t00700106').setValue(value);
            return Ext.String.format('{0} Total{1}', value, value !== 1 ? 's' : ''); 
        }
    }