能否通过点击目标行触发Row-editing中的更新按钮?
当然可以实现!你可以通过监听RowEditing插件的相关事件或者Grid的行点击事件,来自动触发更新(保存)按钮的动作,下面给你两种实用的实现方案:
方案一:进入编辑模式后自动触发保存
这种方式适合你希望点击行进入编辑状态后,自动提交修改(相当于自动点击更新按钮)的场景。你只需要在RowEditing的startedit事件里调用插件的saveEdit()方法即可:
plugins: [ Ext.create('Ext.grid.plugin.RowEditing', { clicksToEdit: 1, saveBtnText: 'Actualizar', cancelBtnText: 'Cancelar', listeners: { edit: function(editor, context, eOpts) { SgaWeb.app.getController('app').function() }, canceledit: function(editor, context, eOpts) { var fila = me.store.getAt(0); if (fila.get('codigoDato') == '0') { me.store.removeAt(0); } }, // 新增startedit监听:进入编辑后立即保存 startedit: function(editor, context, eOpts) { // 用setTimeout延迟一下,确保编辑界面渲染完成 setTimeout(function() { editor.saveEdit(); }, 100); }, beforeedit: function(editor, context, eOpts) { // 你的beforeedit逻辑 } } }) ]
方案二:点击行直接触发保存(灵活控制)
如果你希望更灵活地控制——比如点击行时,不管当前是否处于编辑状态都触发保存,可以监听Grid的rowclick事件,手动调用RowEditing的保存方法:
// 假设你的Grid实例是me.grid me.grid.on('rowclick', function(grid, record) { // 获取RowEditing插件(建议给插件设置pluginId: 'rowEditing'方便获取) var rowEditing = grid.getPlugin('rowEditing'); if (!rowEditing) return; if (rowEditing.editing && rowEditing.context.record === record) { // 当前行已经在编辑状态,直接保存 rowEditing.saveEdit(); } else { // 先进入编辑模式,再触发保存 rowEditing.startEdit(record, 0); setTimeout(function() { rowEditing.saveEdit(); }, 100); } });
注意事项:
saveEdit()方法只有在记录的数据有变更时才会触发edit事件和提交操作,如果想强制提交(哪怕数据没改),可以手动调用record.save()方法替代。- 加
setTimeout是为了确保编辑控件已经渲染完成,避免出现DOM未就绪的问题,你可以根据实际情况调整延迟时间。
内容的提问来源于stack exchange,提问作者1
相关产品推荐
相关产品推荐

