在行内自定义jqGrid编辑按钮以打开新视图

时间:2015-03-25 20:37:46

标签: jqgrid

因此jqGrid每行内部编辑按钮的默认行为是在同一页面中打开表单,对吗?

我需要它来打开另一个视图,另一个URL。

我已经设法使用.navButtonAdd方法使用grid-pager中的编辑按钮执行此操作。但我无法弄清楚如何为行按钮做同样的事情。

有人可以帮助我吗?

1 个答案:

答案 0 :(得分:1)

jqGrid目前没有提供任何简单的方法来将编辑调用替换为另一种方法或包含自定义按钮。你可以做的是"继承" $.fn.fmatter.rowactions函数就像我在the answer中描述的那样。单击任何操作按钮将调用$.fn.fmatter.rowactions函数。因此,您可以测试act参数是否为"edit"。如果是非"edit"按钮,您可以将呼叫转发到原始$.fn.fmatter.rowactions功能。如果是"edit"按钮,您可以执行任何自定义操作。

更新:确切的实现与您使用的jqGrid版本略有不同,因为函数this的参数和$.fn.fmatter.rowactions的值对于不同的版本是不同的jqGrid。我为您创建的the demo使用了free jqGrid 4.8(请参阅readmewiki)。我使用以下代码进行子类化

var orgRowActions = $.fn.fmatter.rowactions;
$.fn.fmatter.rowactions = function (e, act) {
    var $grid = $(this).closest("table.ui-jqgrid-btable"),
        rowid = $(this).closest("tr.jqgrow").attr("id");

    if (act === "edit") {
        $grid.jqGrid("viewGridRow", rowid);
        return false;
    }
    return orgRowActions.call(this, e, act);
}

结果"编辑"按钮开始"查看"而不是编辑表格。

我计划在下一版本的免费jqGrid中包含更多自定义功能。因此,人们将能够创建自定义内联图标,而无需使用子类化技巧。