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

参见英文答案 > Prevent restoring row if error was rised while editing2个
使用内联编辑模式编辑jQgrid行.
按Enter键使用http POST将数据发送到服务器.
如果出现错误,POST方法返回状态400 Bad Reguest.下面的代码中的errorofunc显示错误
案件.
用户更正行中的数据并再次按Enter键.

按Enter键将被忽略,没有任何反应.如果返回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',width: 271 },{ name: 'Istopic',width: 57 },{name: 'Critical',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,{},errorfunc
             );
        }
    </script>

<div id="grid1container" style="width: 100%;">
    <table id="grid">
    </table>
    <div id="pager">
    </div>
</div>

UPDATE: errrofunc calls editrow which
according to
07001
should set enter key again to save.
For unknown reason this does not
occur.

更新:在errorfunc网格中.改为

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

根据奥列格的评论

解决方法

您在errorfunc实现(grid.restoreAfterErorr)中使用变量网格.网格
是未定义的,你在行中有异常.

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

$.jgrid.info_dialog($.jgrid.errors.errcap,'<div class="ui-state-error">'+
    response.responseText +'</div>',$.jgrid.edit.bClose,{buttonalign:'right'});

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

相关文章

jQuery插件的种类 1、封装对象方法 这种插件是将对象方法封装起来,用于对通过选择器获取的jQuery对象进...
扩展jQuery插件和方法的作用是非常强大的,它可以节省大量开发时间。 入门 编写一个jQuery插件开始于给...
最近项目中需要实现3D图片层叠旋转木马切换的效果,于是用到了jquery.roundabout.js。 兼容性如图: ht...
一、什么是deferred对象? 开发网站的过程中,我们经常遇到某些耗时很长的javascript操作。其中,既有异...
AMD 模块 AMD(异步模块定义,Asynchronous Module Definition)格式总体的目标是为现在的开发者提供一...