我正在对jqgrid进行一些内联编辑。客户端希望出现一个确认对话框,表明用户确实想保存所做的更改(类似于删除工作的方式)。在查看http://github.com/tonytomov/jqGrid/blob/master/js/grid.inlinedit.js时,我注意到editRow命令采用了这些参数。
table.jqGrid('editRow',id,true / keys /, 函数(){警报( '1');} / oneditfunc /, 函数(){警报( '1.5'); return false;} / successfunc /, 空/ URL /, 空/ extraparam /, 函数(){警报( '2');} / aftersave /, 函数(){警报( '3');} / 错误 /, 函数(){警报( '4');} / afterrestore /);
当我开始编辑oneditfunc被调用。在发送到服务器后成功调用getfunc,然后调用afterrestore。似乎应该有一个beforeSave或类似的东西?
使用这些参数并将其发送到saveRow函数。它似乎没有任何地方我可以注入一个方法来中止发送数据或弹出一个模态窗口来确认正在进行的更改。
这是我的疏忽还是这个功能,我将不得不烘烤到jqgrid?
答案 0 :(得分:2)
解决问题的一种方法是使用custom validation editrules。在将数据发送到服务器之前,它将被验证。该方法的唯一缺点是,如果用户决定不发送数据,将显示包含您主要生成的文本的错误消息。
另一种方法是将serializeRowData与errorfunc
(editRow
的参数)一起使用。通常,jqGrid的serializeRowData参数将用于修改或编码将发送到服务器的数据。因此,如果您在函数内部显示一个构造对话框,并且在该情况下不向服务器发送数据或伪错误数据,则服务器可以回答已知错误。然后在errorfunc
内,您可以忽略此特殊错误。因此,您可以使用错误消息解决问题。毕竟因为错误jqGrid调用“restoreRow”而原始数据将被恢复。