在编辑ExtJS网格中的整行后点火“afteredit”?

时间:2011-04-13 11:11:21

标签: events extjs editor grid

我有一个ExtJS编辑器网格,里面有一些列。我想修改记录上的数据并自动将数据保存到DB。但是在完成编辑当前行的所有单元格后,我只需要保存数据。我已经使用了事件“afteredit”,但它在一个单元格被更改后立即解雇了该事件。 在完成修改所有单元格之前,如何保持该事件不被触发?或者你能否建议另一种方法来做到这一点,而不是使用“afteredit”事件? 非常感谢你。

5 个答案:

答案 0 :(得分:0)

我认为在您的情况下,单击按钮以保存网格会更容易。您可以通过调用grid.store.getModifiedRecords()来访问所有已修改的记录,并将其发送到您的后端服务并进行批量更新,而不是一次更新一行。

答案 1 :(得分:0)

以下是我的问题:您是否连续编辑了所有单元格?更好的解决方案是使用“保存”按钮将更新的数据发送回服务器并将其保存到数据库中。

现在,如果您坚持要修改连续的所有单元格,则可以执行以下操作:

afteredit事件处理程序中:

  1. 获取正在编辑的记录(您可以通过event.record
  2. 获取
  3. 检查记录中是否已修改所有字段。这可以通过检查公共财产modified
  4. 来完成
  5. 如果修改了所有字段,请继续将更新的记录发送到服务器以保存到数据库中。

答案 2 :(得分:0)

您可以在选择模型上使用rowdeselect事件(假设您使用Ext.grid.RowSelectionModel。在事件处理程序中,您可以检查记录是否已被修改并做出相应的反应。

var grid = // your grid 
grid.getSelectionModel().on("rowdeselect", function(selModel, rowIndex, record) {
    if (record.dirty) {
        // record has been modified
    }
});

答案 3 :(得分:0)

您可以查看Ext.ux.grid.RowEditor。它有一个afteredit事件,在编辑完行时会触发该事件。

您可以在http://dev.sencha.com/deploy/dev/examples/grid/row-editor.html

找到工作示例

答案 4 :(得分:0)

触发 edit 事件后,应检查 modified 配置,以检查是否所有网格列都已被修改。修改后,您可以将它们发送到后端。