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