我有一个ExtJS编辑器网格,里面有一些列。我想修改一条记录上的数据,并自动将数据保存到DB中。但我只需要在编辑完当前行的所有单元格后保存数据。我已经使用了“afteredit”事件,但它在一个单元格被修改后立即触发了该事件。我如何才能在修改完所有单元格后才触发该事件呢?或者你能建议另一种方法来做这件事,而不是使用“afteredit”事件吗?非常感谢。
6qfn3psc1#
您可以查看一下Ext.ux.grid.RowEditor,它有一个afteredit事件,当行编辑完成时触发该事件。您可以在http://dev.sencha.com/deploy/dev/examples/grid/row-editor.html中找到工作示例
Ext.ux.grid.RowEditor
afteredit
s3fp2yjn2#
我的问题是:您是否编辑了一行中的所有单元格?一个更好的解决方案是使用“保存”按钮将更新后的数据发送回服务器并保存到DB中。现在,如果您坚持要修改某一列的所有储存格,您可以执行下列动作:在afteredit事件处理程序中:1.获取正在编辑的记录(可以通过event.record获取)1.检查记录中的所有字段是否都已修改。这可以通过检查公共属性modified来完成。1.如果修改了所有字段,则继续将更新后的记录发送到服务器,以便保存到DB中。
event.record
modified
aemubtdh3#
当edit事件触发后,检查modifiedconfig是否所有的网格列都已修改,修改后可以发送到后台。
nfs0ujit4#
我认为在您的情况下,使用一个按钮来保存网格会更容易。您可以通过调用grid.store.getModifiedRecords()访问所有修改过的记录,并将其发送到后端服务,然后进行批量更新,而不是一次更新一行。
grid.store.getModifiedRecords()
wnrlj8wa5#
您可以在选择模型上使用rowdeselect事件(假设您使用了Ext.grid.RowSelectionModel。在事件处理程序中,您可以检查记录是否已被修改并做出相应的React。
rowdeselect
Ext.grid.RowSelectionModel
var grid = // your grid grid.getSelectionModel().on("rowdeselect", function(selModel, rowIndex, record) { if (record.dirty) { // record has been modified } });
5条答案
按热度按时间6qfn3psc1#
您可以查看一下
Ext.ux.grid.RowEditor
,它有一个afteredit
事件,当行编辑完成时触发该事件。您可以在http://dev.sencha.com/deploy/dev/examples/grid/row-editor.html中找到工作示例
s3fp2yjn2#
我的问题是:您是否编辑了一行中的所有单元格?一个更好的解决方案是使用“保存”按钮将更新后的数据发送回服务器并保存到DB中。
现在,如果您坚持要修改某一列的所有储存格,您可以执行下列动作:
在
afteredit
事件处理程序中:1.获取正在编辑的记录(可以通过
event.record
获取)1.检查记录中的所有字段是否都已修改。这可以通过检查公共属性
modified
来完成。1.如果修改了所有字段,则继续将更新后的记录发送到服务器,以便保存到DB中。
aemubtdh3#
当edit事件触发后,检查modifiedconfig是否所有的网格列都已修改,修改后可以发送到后台。
nfs0ujit4#
我认为在您的情况下,使用一个按钮来保存网格会更容易。您可以通过调用
grid.store.getModifiedRecords()
访问所有修改过的记录,并将其发送到后端服务,然后进行批量更新,而不是一次更新一行。wnrlj8wa5#
您可以在选择模型上使用
rowdeselect
事件(假设您使用了Ext.grid.RowSelectionModel
。在事件处理程序中,您可以检查记录是否已被修改并做出相应的React。