3

我需要在编辑函数中恢复(将值设置为编辑前的值)编辑的网格单元格值,而不是在 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
        }
        });
    }
}

如何更改网格单元格值(编辑器)?

谢谢!

4

2 回答 2

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属性。

于 2012-07-25T21:19:09.497 回答
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();
}
于 2019-03-11T20:41:53.283 回答