jqGrid内联编辑:如果post返回错误,如何再次保存

使用内联编辑模式编辑jQgrid行。 按Enter键使用http POST将数据发送到服务器。 如果出现错误,POST方法返回状态400 Bad Reguest。 下面的代码中的errorofunc在这种情况下显示错误。 用户更正行中的数据并再次按Enter键。

按Enter键将被忽略,没有任何反应。 如果返回404错误,则看起来Enter键未绑定。 已编辑行的更改将丢失,无法保存。

我试着在errorfunc中设置

restoreAfterError = false; grid.restoreAfterErorr = false;

但是错误后行仍然无法再次保存。

返回400错误后如何允许保存正确的行数据?

 var lastSelectedRow; $(function () { var grid = $("#grid"); grid.jqGrid({ url: '/Grid/GetData', datatype: "json", mtype: 'POST', scroll: 1, multiselect: true, multiboxonly: true, scrollingRows : true, autoencode: true, colModel: [ { name: 'Source', fixed: true, editable: true, width: 30 }, { name: 'Est', fixed: true, editable: true, width: 271 }, { name: 'Istopic', fixed: true, editable: true, width: 57 }, {name: 'Critical', fixed: true, editable: true, width: 50} ], gridview: true, pager: '#pager', sortname: 'est', viewrecords: true, rowNum: 30, sortorder: "asc", editurl: '/Grid/Edit' }); $("#grid").jqGrid('bindKeys', { onEnter: function(rowid) { doeditRow(rowid); } } ); }); function doeditRow(rowID) { var grid2 = $("#grid"); if (rowID && rowID !== lastSelectedRow) { grid2.jqGrid('restoreRow', lastSelectedRow); lastSelectedRow = rowID; } invokeEditRow(); } function errorfunc(rowID, response) { // todo: why this does not allow Enter key to continue ase after error: restoreAfterError = false; $("#grid").restoreAfterErorr = false; alert(response.responseText); lastSelectedRow = rowID; invokeEditRow(); return true; } function invokeEditRow() { $("#grid").jqGrid('editRow', lastSelectedRow ,true,null, null, null, {}, null, errorfunc ); }  

更新:errrofunc调用editrow,根据https://github.com/tonytomov/jqGrid/blob/master/js/grid.inlinedit.js应该再次设置回车键保存。 由于未知原因,这不会发生。

更新:在errorfunc网格中。 改为

  $("#grid").restoreAfterErorr = false; 

根据奥列格的评论

您在errorfunc实现( grid.restoreAfterErorr )中使用变量gridgrid undefined ,您在行中有exception。

更新 :你应该替换alert(response.responseText);

 $.jgrid.info_dialog($.jgrid.errors.errcap,'
'+ response.responseText +'
', $.jgrid.edit.bClose,{buttonalign:'right'});

查看与标准情况下相同的样式对话框。 内联编辑的errorfunc负责显示错误消息本身。