Я застрял с этим компонентом. Каждый раз, когда я вызываю скрипт обновления для сетки редактора, данные, отправляемые в PHP, являются первой отредактированной строкой, но если я редактирую вторую строку, отправляемые данные редактируются в первую и вторую строки. Если я редактирую третий случай, тот же самый, данные, отправляемые в PHP, — это первая, вторая и третья отредактированные строки. Есть ли способ отправить только данные отредактированной строки?
Вот мой код:
var MCompetidoresGrid = new Ext.grid.EditorGridPanel({
store : MCompetidoresStore,
columns : [
MCompetidoresSm,
{header:'id', dataIndex:'id', sortable: true, width:30, },
{header:'Empresa', dataIndex:'id_empresa', sortable: true, width:120, },
{header:'CIF', dataIndex:'cif', sortable: true, width:120, editor:MCompetidorestextField}, //NUEVO CAMPO 12-03-2015
{header:'Acronimo', dataIndex:'codigo', sortable: true, width:60, editor:MCompetidorestextField},
{header:'Competidor', dataIndex:'nombre', sortable: true, width:200, editor:MCompetidorestextField},
{header:'Descripcion', dataIndex:'descripcion',sortable: true, width:320, editor:MCompetidorestextField}
],
sm : MCompetidoresSm,
border : false,
stripeRows : true,
viewConfig:{
markDirty:false
}
});
var MCompetidoresStore = new Ext.data.Store({
id : "id",
proxy : MCompetidoresProxy,
reader : MCompetidoresReader,
writer : MCompetidoresWriter,
autoSave : true
});
var MCompetidoresWriter = new Ext.data.JsonWriter({
encode : true,
writeAllFields : false
});
var MCompetidoresReader = new Ext.data.JsonReader({
totalProperty : 'total',
successProperty : 'success',
messageProperty : 'message',
idProperty : 'id',
root : 'data'
},[
{name: 'id'},
{name: 'id_empresa'},
{name: 'cif'},
{name: 'codigo'},
{name: 'nombre'},
{name: 'descripcion'},
]);
var MCompetidoresProxy = new Ext.data.HttpProxy({
api: {
read : "./Competenciaphp/MtoMaestro/getContacts.php"+"?"+"cliente="+despliegue,
create : "./Competenciaphp/MtoMaestro/createContact.php"+"?"+"cliente="+despliegue,
update : "./Competenciaphp/MtoMaestro/updateContact.php"+"?"+"cliente="+despliegue,
destroy : "./Competenciaphp/MtoMaestro/destroyContact.php"+"?"+"cliente="+despliegue
},
});
Я только знаком с местным магазином, но, если это возможно, я могу предложить вам добавить store.commitChanges()
в вашем успешном событии обновления. (что-то вроде того, что мы можем сделать с помощью вызова ajax). Или добавьте событие обновления в определение вашего магазина, чтобы сделать commitChanges:
var MCompetidoresStore = new Ext.data.Store({
id : "id",
proxy : MCompetidoresProxy,
reader : MCompetidoresReader,
writer : MCompetidoresWriter,
autoSave : true,
listeners:
{
update:function(){
this.commitChanges();
}
}
});
Других решений пока нет …