我有一个从dojo / request填充的dgrid:
var TrackableMem = declare([Memory, Trackable]);
var store = new TrackableMem({
data : resp.results
});
此网格有几列是文本框。当它们被更改时,我想确认用户确实想要编辑它们:
grid.on("dgrid-datachange", function(evt) {
if(!confirm("change this field?")) {
// revert cell value back to the old one.
grid.get("collection").get(evt.cell.row.id).notes = evt.oldValue;
grid.refresh();
} else {
// do ajax call here.....
}
}
这不起作用,新的更新值保留在那里,但是当我在开发者控制台中运行相同的东西时它确实有效:
grid.get("collection").get(0).notes = "testing";
grid.refresh();
有什么想法吗? evt.cell.row.id& evt.oldValue是正确的值。
答案 0 :(得分:1)
由于尚未保留值,因此无需手动还原dgrid-datachange
处理程序中的数据。
这是有目的地完成的,因此您可以取消更新。在你的情况下,你可以这样做:
grid.on("dgrid-datachange", function(evt) {
if(!confirm("change this field?")) {
evt.preventDefault();
} else {
// do ajax call here.....
}
}
您可以详细了解这个in the offical docs和this Github ticket。