extjs的grid中添加的行如何撤销

How to undo the row added in the grid of extjs

我想知道如何在实际保存之前撤消添加到网格中的特定内容。

请看这个

我添加了两行,但是因为例如:对于某些验证失败,第二行无效,所以我想撤消第二行但保留第一行以将该数据保存到数据库。

我尝试的是将所有脏行推送到一个数组,然后在数据库中进行更新。但我不知道如何撤消或删除正在添加的无效行。无需重新加载网格 Example for reference Live example

您不必为了同步而将行推入数组。您真正想要使用的是底层商店 and/or 模型上可用的方法。

要拒绝第二个模型并更新数据库中的所有其他模型,两行就足够了。确切的代码可能因 Ext 版本而异;在 ExtJS 6.2.1 中,它将是:

grid.getStore().getAt(1).reject()(或.drop()
grid.getStore().sync()

虽然通用方法是拒绝所有无效模型:​​

var store = grid.getStore(),
    invalidRecords = store.query(function(record) {
        return !record.getValidation().isValid();
    });
invalidRecords.each(function(record) {
     record.reject();
})
store.sync();