Extjs4,如何在编辑功能中恢复编辑的网格单元格值?

时间:2012-07-25 20:47:05

标签: extjs extjs4

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

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

谢谢!

2 个答案:

答案 0 :(得分:4)

reject method

怎么样?
"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属性。

答案 1 :(得分: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();
}