使用内联编辑模式编辑jQgrid行。 按Enter键使用http POST将数据发送到服务器。 如果出现错误,POST方法返回状态400 Bad Reguest。下面的代码中的errorofunc显示错误 案件。 用户纠正行中的数据并再次按下输入。
忽略输入,没有任何反应。如果返回404错误,则看起来Enter键未绑定。 已编辑行的更改将丢失,无法保存。
我尝试在errorfunc中设置
restoreAfterError = false; grid.restoreAfterErorr = false;
但错误后仍然无法再保存行。
如何在返回400错误后允许保存正确的行数据?
<script type="text/javascript">
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
);
}
</script>
<div id="grid1container" style="width: 100%;">
<table id="grid">
</table>
<div id="pager">
</div>
</div>
更新:errrofunc调用editrow 根据 https://github.com/tonytomov/jqGrid/blob/master/js/grid.inlinedit.js 应该再次设置回车键以保存。 由于未知原因,这不是 发生。
更新:在errorfunc网格中。改为
$("#grid").restoreAfterErorr = false;
根据奥列格评论
答案 0 :(得分:1)
您在grid
实施(errorfunc
)中使用变量grid.restoreAfterErorr
。 grid
是undefined
,你在行中有异常。
更新:您应将alert(response.responseText);
替换为
$.jgrid.info_dialog($.jgrid.errors.errcap,'<div class="ui-state-error">'+
response.responseText +'</div>', $.jgrid.edit.bClose,{buttonalign:'right'});
查看与标准案例中相同的样式对话框。内联编辑中的errorfunc
负责显示错误消息本身。