afterSubmit并不总是被解雇

时间:2014-04-01 11:03:42

标签: jquery jqgrid

我显示了jqGrid表,然后我用navGrid设置了一些属性,如下所示:

$("#opozorila").jqGrid('navGrid', '#opozorilapager',
    {afterSubmit: reloadGrid},//Note: reloadGrid contains just alert('test');
    {afterSubmit: reloadGrid},
    {afterSubmit: reloadGrid});

如果我选择行,点击编辑通过navGrid菜单并提交已编辑的行,则效果很好。但如果我按照以下方式进入编辑弹出窗口,它就无法工作:

onSelectRow: function(id) {
        //var id = $(this).attr('id');
        $("#opozorila").jqGrid('editGridRow', id);
    },

基本上只有在弹出窗口通过navGrid菜单打开时才会触发。我怎样才能让它以两种方式运作?

1 个答案:

答案 0 :(得分:2)

首先,您以错误的方式使用navGrid。您应该在{}之后添加'#opozorilapager'参数:

$("#opozorila").jqGrid('navGrid', '#opozorilapager',
    {}, // !!! navGrid options
    {afterSubmit: reloadGrid},//Note: reloadGrid contains just alert('test');
    {afterSubmit: reloadGrid},
    {afterSubmit: reloadGrid});

现在谈谈你的主要问题。回调afterSubmiteditGridRow的选项(请参阅the documentation),因此如果您明确调用它,则应将其指定为参数:

onSelectRow: function(id) {
    $(this).jqGrid('editGridRow', id, {afterSubmit: reloadGrid});
}

如果您有多个地方拨打editGridRow,我建议您将选项保存在变量中并使用navGrid中的变量并明确调用editGridRow

var paramEdit = { afterSubmit: reloadGrid },
    paramAdd = { afterSubmit: reloadGrid },
    paramDel = { afterSubmit: reloadGrid },
    $myGrid = $("#opozorila");

...
$myGrid.jqGrid({
    ...
    onSelectRow: function (rowid) {
        $(this).jqGrid("editGridRow", rowid, paramEdit);
    }
});
$myGrid.jqGrid("navGrid", "#opozorilapager", {}, paramEdit, paramAdd, paramDel);