jqGrid onSelectRow不起作用

时间:2014-08-29 12:32:34

标签: c# jqgrid

我希望在内联编辑后执行一些操作,但是当我使用此代码时,编辑刚刚停留在编辑模式下的行。如果我删除onSelectRow,则行编辑效果很好。

onSelectRow: function(rowid){

    $(grid_selector).jqGrid('editRow', rowid, true, null, null, null, {}, aftersavefunc);

    function aftersavefunc(rowid, result) {
        alert("X"); 
        $(grid_selector).trigger("reloadGrid");
    }
},

1 个答案:

答案 0 :(得分:0)

首先你写道:

  

如果我删除onSelectRow,则行编辑效果很好。

听起来很可疑,因为您在editRow开始行编辑。如果在删除onSelectRow回调后内联编辑仍然有效,那么您应该搜索代码的其他部分,其中editRow将直接间接调用。例如,您可以使用formatter: "actions"inlineNav为您启动editRow。要通知jqGrid使用您的aftersavefunc,您必须使用inlineNavformatter: "actions"的相应参数。例如inlineNav提供editParamsaddParams选项。通常会定义一组操作内联编辑参数(请参阅下面代码中的editOptions变量),并在editRow的直接和间接调用中使用它:

var editOptions = {
        keys: true,
        successfunc: function () {
            var $self = $(this);
            setTimeout(function () {
                $self.trigger("reloadGrid");
            }, 50);
        }
    },
    $grid = $("#list");

$grid.jqGrid({
    ...
    onSelectRow: function (rowid) {
        $(thus).jqGrid("editRow", rowid, editOptions);
    }
});

$grid.jqGrid("navGrid", "#pager", { edit: false, add: false });

$grid.jqGrid("inlineNav", "#pager", {
    addParams: {
        position: "last",
        addRowParams: editOptions
    },
    editParams: editOptions
});

顺便说一句,您可以点击inlineNav添加的原始修改按钮,而不是直接调用editRow。有关相应的代码示例(onSelectRow回调内部),请参阅the answer