Dojo dgrid 更新一行
Dojo dgrid updating a row
我有一个从 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 是正确的值。
没有必要在 dgrid-datachange
处理程序中手动还原数据,因为这些值尚未保留。
这是故意的,以便您可以取消更新。在你的情况下你可以这样做:
grid.on("dgrid-datachange", function(evt) {
if(!confirm("change this field?")) {
evt.preventDefault();
} else {
// do ajax call here.....
}
}
您可以阅读更多相关内容 in the offical docs and this Github ticket。
我有一个从 dojo/request:
填充的 dgridvar 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 是正确的值。
没有必要在 dgrid-datachange
处理程序中手动还原数据,因为这些值尚未保留。
这是故意的,以便您可以取消更新。在你的情况下你可以这样做:
grid.on("dgrid-datachange", function(evt) {
if(!confirm("change this field?")) {
evt.preventDefault();
} else {
// do ajax call here.....
}
}
您可以阅读更多相关内容 in the offical docs and this Github ticket。