Reputation: 676
I have a dgrid that populates from a dojo/request:
var TrackableMem = declare([Memory, Trackable]);
var store = new TrackableMem({
data : resp.results
});
This grid has a few columns that are textboxes. When they are changed, I would like to confirm the user actually wants to edit them:
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.....
}
}
This does not work, the new updated value stays there, but when I run the same exact thing in the developer console it does work:
grid.get("collection").get(0).notes = "testing";
grid.refresh();
Any ideas? evt.cell.row.id & evt.oldValue are correct values.
Upvotes: 0
Views: 1266
Reputation: 1545
There's no need to manually revert the data in the dgrid-datachange
handler since the values haven't been persisted yet.
This is done on purpose so that you can cancel the update. In your case you could do:
grid.on("dgrid-datachange", function(evt) {
if(!confirm("change this field?")) {
evt.preventDefault();
} else {
// do ajax call here.....
}
}
You can read more about this in the offical docs and this Github ticket.
Upvotes: 1