如何在网格编辑extjs 6.2.0之后只向DB发送一行?
在我连续编辑了一个单元格后,scipt会向服务器发送除之前编辑的所有行。 但是我喜欢只向服务器发送一行,我编辑了一个单元格。 怎么做? He is a json to server
Ext.require(['Ext.data.*', 'Ext.grid.*']);
Ext.util.Format.timefieldRenderer = function(format) {
return function(v) {
if (v instanceof Date) {
return v.format(format);
} else {
return v;
}
};
};
// Создаем model
Ext.define('Users', {
extend: 'Ext.data.Model',
fields: [{
name: 'id',
type: 'int'
},
{
name: 'time',
type: 'date',
//dateFormat: 'H:i'
},
]
});
var occupationStore = Ext.create('Ext.data.Store', {
fields: ['time'],
data: [{
time: 'CEO'
},
{
time: 'Vicepresident'
},
{
time: 'Marketing manager'
},
]
});
Ext.onReady(function() {
// Создаем store
var store = Ext.create('Ext.data.Store', {
autoLoad: true,
autoSync: true,
model: 'Users',
proxy: {
type: 'ajax',
url: 'server.php',
api: {
read: 'server.php?action=read',
update: 'server.php?action=update'
},
reader: {
type: 'json',
rootProperty: 'data'
},
writer: {
type: 'json',
encode: true,
rootProperty: 'dataUpdate',
allowSingle: false,
writeAllFields: true,
//root:'records'
},
actionMethods: {
read: 'GET',
update: 'GET'
}
},
}
);
var grid = Ext.create('Ext.grid.Panel', {
renderTo: document.body,
//plugins: [rowEditing],
// Редактирование
plugins: {
ptype: 'cellediting',
clicksToEdit: 1
},
width: 1000,
height: 330,
frame: true,
title: 'Users',
store: store,
iconCls: 'icon-user',
columns: [{
text: 'id',
width: 50,
sortable: true,
dataIndex: 'id',
renderer: function(v, meta, rec) {
return rec.phantom ? '' : v;
}
},
{
header: 'time',
width: 120,
// sortable: true,
dataIndex: 'time_start',
//format: 'H:i',
// Нужно для верного отображеия времени после редактирования в таблице
renderer: Ext.util.Format.dateRenderer('H:i'),
editor: {
completeOnEnter: false,
field: {
xtype: 'timefield',
format: 'H:i',
//name: 'timeStart1',
//fieldLabel: 'Time In',
minValue: '8:00',
maxValue: '20:00',
increment: 30,
anchor: '100%',
allowBlank: false
}
}
},
],
});
});
答案 0 :(得分:0)
您可能只需要来自服务器的正确回复。如果服务器(PHP)返回
{"success":true}
每次成功调用update
时,提交的记录都会标记为已成功同步("not dirty"),除非再次更改,否则将不再提交给服务器。
请注意,如果多个记录在前端一次更改,这不会阻止商店发送多条记录,但这会阻止一遍又一遍地向服务器发送冗余信息(已保存的记录)。
你可以在小提琴中看到这个:
https://fiddle.sencha.com/#view/editor&fiddle/21t6
请注意"服务器"在我的小提琴中需要几百毫秒才能回答,一旦记录不再变脏,更改的网格列上的红色耳朵就会消失。