Extjs 4.2 在控制器中编辑存储数据
Extjs 4.2 edit store data in controller
我有一个网格,其中的数据是我用其他商店的数据手动填充的:
fillfunction:function(){
var Store=Ext.ComponentQuery.query('#grid')[0].getStore();
var Store2=Ext.ComponentQuery.query('#grid2')[0].getStore();
Store.each(function(record){
var record=Ext.create('App.model.record');
record.data['Referencia_proveedor']=record.data['codigo_erp_producto'];
record.data['Especialidad']=record.data['nombre_comercial_1'];
record.data['Presentacion']=record.data['forma_presentacion'];
record.data['Porc_real_decreto']=record.data['porcentaje_real_decreto'];
record.data['ADJ']=false;
Store2.add(record);
});
}
此网格有 selType:'checkboxmodel',我有一个按钮可以更改存储中的数据['ADJ'](在模型中此列类型是布尔值)从假到真。
我用下一个代码编辑数据:
changeValue:function(){
var selection=Ext.ComponentQuery.query('#grid2')[0].getSelectionModel().getSelection();
for (i = 0; i < selection.length; i++){
var index=Ext.ComponentQuery.query('#grid2')[0].getStore().indexOf(selection[i]);
var record=Ext.ComponentQuery.query('#grid2')[0].getStore().getAt(index);
record.set('ADJ',true);
}
var total=Ext.ComponentQuery.query('#grid2')[0].getStore().count();
var alterstore=Ext.ComponentQuery.query('#grid2')[0].getStore().getRange(0,total);
Ext.ComponentQuery.query('#grid2')[0].getStore().loadRecords(alterstore,{addRecords: false});
}
如果我再次打印 ADJ 的存储值已更新,但网格中仍然是旧值 value.How 我可以更新网格以查看新值吗?
编辑
我的格码
var panel1=new Ext.grid.Panel({
itemId:'panel1',
flex:3,
store: store,
title:'<span style="color:blue">Title 1</span>',
scroll:'vertical',
stripeRows: true,
selModel: {
selType: 'checkboxmodel'
},
bbar:{
xtype: 'container',
layout: 'anchor',
items: [bottombar0]
},
loadMask: true,
columns:{
items:[
{header:'<span>R</span>',dataIndex:'Referencia_proveedor',itemId:'',flex:1},
{header:'<span>A</span>',dataIndex:'Especialidad',itemId:'',flex:3},
{header:'<span>P</span>',dataIndex:'Presentacion',itemId:'',flex:1},
{header:'<span>U</span>',dataIndex:'',align:'right',itemId:'',flex:1,renderer:Unidades},
{header:'<span>PVL</span>',dataIndex:'',align:'right',itemId:'',flex:2,renderer:Moneda},
{header:'<span>RD</span>',dataIndex:'Porc_real_decreto',align:'right',itemId:'',flex:1,renderer:Porcentaje},
{header:'<span>ADJ</span>',dataIndex:'',align:'center',itemId:'',flex:1,renderer:adjudicado}
]
}
});
很简单,我打错了
{header:'<span>ADJ</span>',dataIndex:'',align:'center',itemId:'',flex:1,renderer:adjudicado}
这里忘记设置dataIndex为:
{header:'<span>ADJ</span>',dataIndex:'ADJ',align:'center',itemId:'',flex:1,renderer:adjudicado}
忘记设置字段的dataIndex dataIndex:'ADJ'
接下来我在控制器中执行:
changeValue:function(){
var selection=Ext.ComponentQuery.query('#grid2')[0].getSelectionModel().getSelection();
for (i = 0; i < selection.length; i++){
var index=Ext.ComponentQuery.query('#grid2')[0].getStore().indexOf(selection[i]);
var record=Ext.ComponentQuery.query('#grid2')[0].getStore().getAt(index);
record.set('ADJ',true);
}
Ext.ComponentQuery.query('#grid2')[0].getStore().commitChanges();
然后网格中的值 refresh.I 执行 commitChanges 以清除脏字段。
我有一个网格,其中的数据是我用其他商店的数据手动填充的:
fillfunction:function(){
var Store=Ext.ComponentQuery.query('#grid')[0].getStore();
var Store2=Ext.ComponentQuery.query('#grid2')[0].getStore();
Store.each(function(record){
var record=Ext.create('App.model.record');
record.data['Referencia_proveedor']=record.data['codigo_erp_producto'];
record.data['Especialidad']=record.data['nombre_comercial_1'];
record.data['Presentacion']=record.data['forma_presentacion'];
record.data['Porc_real_decreto']=record.data['porcentaje_real_decreto'];
record.data['ADJ']=false;
Store2.add(record);
});
}
此网格有 selType:'checkboxmodel',我有一个按钮可以更改存储中的数据['ADJ'](在模型中此列类型是布尔值)从假到真。 我用下一个代码编辑数据:
changeValue:function(){
var selection=Ext.ComponentQuery.query('#grid2')[0].getSelectionModel().getSelection();
for (i = 0; i < selection.length; i++){
var index=Ext.ComponentQuery.query('#grid2')[0].getStore().indexOf(selection[i]);
var record=Ext.ComponentQuery.query('#grid2')[0].getStore().getAt(index);
record.set('ADJ',true);
}
var total=Ext.ComponentQuery.query('#grid2')[0].getStore().count();
var alterstore=Ext.ComponentQuery.query('#grid2')[0].getStore().getRange(0,total);
Ext.ComponentQuery.query('#grid2')[0].getStore().loadRecords(alterstore,{addRecords: false});
}
如果我再次打印 ADJ 的存储值已更新,但网格中仍然是旧值 value.How 我可以更新网格以查看新值吗?
编辑
我的格码
var panel1=new Ext.grid.Panel({
itemId:'panel1',
flex:3,
store: store,
title:'<span style="color:blue">Title 1</span>',
scroll:'vertical',
stripeRows: true,
selModel: {
selType: 'checkboxmodel'
},
bbar:{
xtype: 'container',
layout: 'anchor',
items: [bottombar0]
},
loadMask: true,
columns:{
items:[
{header:'<span>R</span>',dataIndex:'Referencia_proveedor',itemId:'',flex:1},
{header:'<span>A</span>',dataIndex:'Especialidad',itemId:'',flex:3},
{header:'<span>P</span>',dataIndex:'Presentacion',itemId:'',flex:1},
{header:'<span>U</span>',dataIndex:'',align:'right',itemId:'',flex:1,renderer:Unidades},
{header:'<span>PVL</span>',dataIndex:'',align:'right',itemId:'',flex:2,renderer:Moneda},
{header:'<span>RD</span>',dataIndex:'Porc_real_decreto',align:'right',itemId:'',flex:1,renderer:Porcentaje},
{header:'<span>ADJ</span>',dataIndex:'',align:'center',itemId:'',flex:1,renderer:adjudicado}
]
}
});
很简单,我打错了
{header:'<span>ADJ</span>',dataIndex:'',align:'center',itemId:'',flex:1,renderer:adjudicado}
这里忘记设置dataIndex为:
{header:'<span>ADJ</span>',dataIndex:'ADJ',align:'center',itemId:'',flex:1,renderer:adjudicado}
忘记设置字段的dataIndex dataIndex:'ADJ'
接下来我在控制器中执行:
changeValue:function(){
var selection=Ext.ComponentQuery.query('#grid2')[0].getSelectionModel().getSelection();
for (i = 0; i < selection.length; i++){
var index=Ext.ComponentQuery.query('#grid2')[0].getStore().indexOf(selection[i]);
var record=Ext.ComponentQuery.query('#grid2')[0].getStore().getAt(index);
record.set('ADJ',true);
}
Ext.ComponentQuery.query('#grid2')[0].getStore().commitChanges();
然后网格中的值 refresh.I 执行 commitChanges 以清除脏字段。