1

我将 jqGrid 与 ASP.NET MVC 3 和 Razor 一起使用。

我希望将 2 列与其余列一起添加到 jqGrid。

我要添加的列是

  • 编辑
  • 删除

这些列值我想要的ActionLink

如何将 ActionLink 添加到 JqGrid 的列?

请指导我。

更新 1:在@user1534482 的帮助下,我尝试了这个但没有奏效

colModel: [
    ...
    { name: 'Open', formatter: 'prepareLinks' },
    ...
],

 function prepareLinks(cellvalue, options, rowObject) {
    return "@Html.ActionLink("Open this","Test")";

}

javascript错误消息:

SyntaxError: missing ; before statement
[Break On This Error]   

return "<a href="/SomeController/Test">Open this</a>";

SomeController (line 92, col 41)
4

3 回答 3

5

你应该看看showlink 预定义的格式化程序

您的问题中没有代码,所以我不知道您的场景有多复杂,但总的来说,这样的代码应该足够了:

<script type="text/javascript">
    jQuery("#gridId").jqGrid({
        colNames: [..., 'Edit', 'Delete'],
        colModel: [
            ...
            {name:'EditAction', formatter:'showlink', formatoptions: { baseLinkUrl: '@Url.Action("Edit")' } },
            {name:'DeleteAction', formatter:'showlink', formatoptions: { baseLinkUrl: '@Url.Action("Delete")' } }
        ],
        ...
    });
</script>

行 ID 将自动添加(您可以使用idName选项控制方式)。如果您需要传递一些额外的参数,请查看文档addParam中的选项。

更新

为了澄清最终链接的生成方式,您可以使用以下公式:

"<a " + ((op.target) ? "target=" + op.target : "") + " href=\"" + op.baseLinkUrl + op.showAction + "?" + op.idName + "=" + rowId + op.addParam + "\">" + cellvalue + "</a>"

对象在哪里opformatoptions并且cellvalue是您粘贴到 jqGrid 的数据中的列的值。

于 2012-09-13T10:13:54.840 回答
2

您可以使用自己的格式化程序,例如

 colModel: [

        { name: 'colname', formatter: linkbuilder   },
    ],

and add function

function linkbuilder(cellval, opts, rwdat, _act) {
    return "@Htm.ActionLink()";
}
于 2012-09-13T10:17:03.887 回答
2

感谢@tpeczek 和@user1534482

我终于得到了解决方案,

colModel: [
    ...
    { name: 'Open',
        formatter: function (cellvalue, options, rowObject) {
            return '<a href="/ControllerName/Test/?myId=' + cellvalue + '">' + "Open" + '</a>';
        } 
    },
    ...
],
于 2012-09-13T11:02:33.877 回答