在ExtJS网格中编辑整行后触发“afteredit”?

zzzyeukh  于 2022-11-05  发布在  其他
关注(0)|答案(5)|浏览(229)

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

6qfn3psc

6qfn3psc1#

您可以查看一下Ext.ux.grid.RowEditor,它有一个afteredit事件,当行编辑完成时触发该事件。
您可以在http://dev.sencha.com/deploy/dev/examples/grid/row-editor.html中找到工作示例

s3fp2yjn

s3fp2yjn2#

我的问题是:您是否编辑了一行中的所有单元格?一个更好的解决方案是使用“保存”按钮将更新后的数据发送回服务器并保存到DB中。
现在,如果您坚持要修改某一列的所有储存格,您可以执行下列动作:
afteredit事件处理程序中:
1.获取正在编辑的记录(可以通过event.record获取)
1.检查记录中的所有字段是否都已修改。这可以通过检查公共属性modified来完成。
1.如果修改了所有字段,则继续将更新后的记录发送到服务器,以便保存到DB中。

aemubtdh

aemubtdh3#

edit事件触发后,检查modifiedconfig是否所有的网格列都已修改,修改后可以发送到后台。

nfs0ujit

nfs0ujit4#

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

wnrlj8wa

wnrlj8wa5#

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

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

相关问题