我有一个网格,我需要在其中对列执行“求和”操作并将这些值显示在文本框中。我正在尝试使用 store 的“求和”功能。它工作正常,但是当我销毁这个商店时,它仍然在文本字段中保留计算值,但不在网格中。如果我再次摧毁这家商店,那么它就会干净。谁能指导一下可能出了什么问题?
提前致谢。
我的网格是给定的
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+' ' + '?';
}
}];
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();
}