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

自定义行内的jqGrid编辑按钮以打开新视图,jqgrid,Jqgrid,所以jqGrid每行中的edit按钮的默认行为是在同一页面中打开表单,对吗 我需要它来打开另一个视图,另一个URL 我已经使用网格寻呼机中的edit按钮,使用.navButtonAd方法实现了这一点。但我不知道如何对行按钮执行相同的操作 有人能帮我吗?jqGrid目前没有提供任何简单的方法来取代对另一种方法的编辑调用或包含自定义按钮。或者,您可以像我在中描述的那样“子类化”$.fn.fmatter.rowactions函数。单击任何from action按钮将调用$.fn.fmatter.row

所以jqGrid每行中的edit按钮的默认行为是在同一页面中打开表单,对吗

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

我已经使用网格寻呼机中的edit按钮,使用.navButtonAd方法实现了这一点。但我不知道如何对行按钮执行相同的操作


有人能帮我吗?

jqGrid目前没有提供任何简单的方法来取代对另一种方法的编辑调用或包含自定义按钮。或者,您可以像我在中描述的那样“子类化”
$.fn.fmatter.rowactions
函数。单击任何from action按钮将调用
$.fn.fmatter.rowactions
函数。因此,您可以测试
act
参数是否为
“编辑”
。如果使用非“编辑”按钮,您可以将调用转发到原始的
$.fn.fmatter.rowactions
函数。如果使用
“编辑”
按钮,您可以执行任何自定义操作

已更新:确切的实现取决于您使用的jqGrid版本,因为函数
$.fn.fmatter.rowactions
的参数和值对于不同版本的jqGrid是不同的。我为您创建了使用(请参见和)。我使用下面的代码进行子类化

var orgRowActions=$.fn.fmatter.rowactions;
$.fn.fmatter.rowactions=函数(e,act){
var$grid=$(this).closest(“table.ui jqgrid btable”),
rowid=$(this).closest(“tr.jqgrow”).attr(“id”);
如果(动作==“编辑”){
$grid.jqGrid(“viewGridRow”,rowid);
返回false;
}
返回orgRowActions.call(this,e,act);
}
因此,“编辑”按钮将启动“视图”,而不是编辑表单


我计划在下一版本的免费jqGrid中加入更多的定制可能性。因此,您可以创建自定义内联图标,而无需使用子类化技巧。

感谢您的帮助,Oleg。不过,我觉得我做错了什么。抱歉,这对我来说有点模糊:/根据您发布的链接,我正在这样做:
var orgRowActions=$.fn.fmatter.rowactions;$。fn.fmatter.rowactions=function(rid,gid,act,pos){var$grid=$(“#”+$.jgrid.jqID(gid)),rowData=$grid.jqGrid(“getLocalRow”,rid),isNonEditable=false,result;if(act==“edit”){window.location=myURL;}result=orgRowActions.call(this,rid,gid,act,pos);返回结果;}
我有什么想法吗?@LucasGabriel:我为您创建了演示实现的演示。请参阅我答案的更新部分。非常感谢!就这样。我使用的是4.6.0版本,参数确实不同。现在一切正常@卢卡斯:不客气!我认为,
$.fn.fmatter.rowactions
的接口在4.6.0和免费jqGrid 4.8中是相同的,因此您也可以在4.6中使用相同的代码。我仍然建议您尝试免费的jqGrid,它像JQGrid4.6一样是免费的,它包含许多新特性和错误修复。这是jqGrid的分支,我将在未来继续开发它。那么,我将使用它。我的项目处于早期阶段,所以我最好马上改变它。