我需要在编辑功能中恢复(设置值到编辑前的值)编辑的网格单元格值,而不是在validateedit函数中。
"orderList": {
validateedit: function (plugin, edit) {
//validate...
},
edit: function (plugin, edit) {
Ext.MessageBox.confirm('Confirm', 'Are you sure to change this order status?', function (btn) {
if (btn == 'yes') {
//update
} else {
// I want to rollback!
edit.cancel = true;
edit.record.data[edit.field] = edit.originalValue; //it does not work
}
});
}
}
如何更改网格单元格值(编辑器)?
谢谢!
答案 0 :(得分:4)
"orderList": {
validateedit: function (plugin, edit) {
//validate...
},
edit: function (plugin, edit) {
Ext.MessageBox.confirm('Confirm', 'Are you sure to change this order status?', function (btn) {
if (btn == 'yes') {
//update
} else {
edit.record.reject(); // this should revert all changes
}
});
}
}
另请注意,edit
事件的第二个参数(您命名为“edit”的参数)不包含cancel
属性,即beforeedit
事件的属性。因此,此行edit.cancel = true
不会为您做任何事情。
我也很好奇为什么你没有使用beforeedit
事件,它似乎更适合这种事情 - 它为什么它具有cancel
属性。
答案 1 :(得分:0)
如果绑定到网格上的afteredit
事件,则可以执行以下操作,具体取决于您要重置的粒度。
注意:我没有添加任何逻辑来使事情变得快速而直接。
grid.on('afteredit', function(e) {
e.record.set(e.field, e.originalValue);
}
grid.on('afteredit', function(e) {
e.record.reject();
}
grid.on('afteredit', function(e) {
e.grid.store.rejectChanges();
}