如果在jqgrid中按下保存操作按钮时返回错误,如何保持内联添加

时间:2012-03-05 17:58:03

标签: javascript jqgrid

jgGrid在工具栏中包含内联添加按钮,并在操作列中保存操作按钮。 使用远程json数据。 如果按下保存操作按钮以终止内联添加和服务器返回错误, 添加的行将从网格中删除,输入的行数据将丢失。 我将restoreAfterError:false添加到formatoptions 如下面的代码所示内联添加按钮,但如果按下保存操作按钮,则忽略这些设置。

如何将行保持在内联添加模式,以便在按下保存操作按钮后可以在错误后继续编辑?

colModel: [ {
  name:"_actions",
  formatter:"actions",
  formatoptions:{
    editbutton:true,
    keys:true,
    // this is ignored if action column save button is pressed:
    restoreAfterError:false,
    delbutton:true
    }
} , ...
], 
editurl: '/Grid/Edit',
datatype: "json",

使用以下内容添加内联添加按钮

$grid.jqGrid('inlineNav', '#grid_toppager', {
    addParams: {
        position: "beforeSelected", 
        rowID: '_empty',
        useDefValues: true,
        addRowParams: {
            keys: true,
            // this is ignored if action column save button is pressed:
            restoreAfterError: false,
        }
    },

    editParams: {
            keys: true,
            // this is ignored if action column save button is pressed:
            restoreAfterError: false,
    },

   add: true,
   edit: false,
   save: true,
   cancel: true
});

1 个答案:

答案 0 :(得分:3)

我测试了restoreAfterError: falseaddParams.addRowParams内的设置editParams,效果很好。如果出现错误,在我的自定义errorfunc显示错误消息后,编辑(或新添加的行)将保持编辑模式。我想只有在使用formatter: 'actions'时才会遇到问题。

如果您使用formatter: 'actions',则无法直接定义restoreAfterError(至少在当前的jqGrid版本3.4.1中)。因此,我建议您将restoreAfterError的默认值更改为false

$.extend($.jgrid.inlineEdit, {
    restoreAfterError: false
});

此外,我建议您从restoreAfterError: false,}addRowParams删除尾随逗号(例如editParams})。许多(但不是全部)Web浏览器都会忽略尾随逗号,但仍然存在错误。