2

列に対して「合計」操作を実行し、これらの値をテキスト ボックスに表示する必要があるグリッドがあります。ストアの「合計」機能を使用しようとしています。正常に動作しますが、このストアを破棄すると、計算された値がテキスト フィールドに保持されますが、グリッドには保持されません。もう一度このストアを破棄すると、きれいになります。何がうまくいかないのか、誰か教えてください。

前もって感謝します。

私のグリッドが与えられます

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

});

その私のテキストフィールド

{
                            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();
}
4

1 に答える 1

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' : ''); 
        }
    }
于 2013-03-28T06:54:42.600 に答える