【问题标题】:Add ActionLink in JqGrid column in ASP.NET MVC 3 Razor在 ASP.NET MVC 3 Razor 的 JqGrid 列中添加 ActionLink
【发布时间】:2012-09-13 09:56:10
【问题描述】:

我正在将 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)

【问题讨论】:

    标签: asp.net-mvc-3 jqgrid html.actionlink


    【解决方案1】:

    你应该看看 showlink predefined formatter

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

    <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 选项控制如何添加)。如果您需要传递一些额外的参数,请查看documentation 中的addParam 选项。

    更新

    为了说明最终链接是如何生成的,您可以使用以下公式:

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

    其中opformatoptions 对象,cellvalue 是您粘贴到 jqGrid 的数据中列的值。

    【讨论】:

    • 谢谢。但我尝试了{ name: 'Open', formatter: 'showlink', formatoptions: { baseLinkUrl: '@Url.Action("Test")', idName: 'FolderId'} },,但仍然没有生成链接,只有 id 显示在列中
    • @Yasser 我已经更新了答案,详细说明了如何生成链接,请检查您是否为数据中的列返回正确的值(通常它应该是链接的文本)。
    • 感谢您的链接,我设法通过使用formatter 选项完成了这项工作,我还发布了我最终使用的答案。再次感谢:)
    【解决方案2】:

    你可以使用你自己的格式器,比如

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

    and add function
    
    function linkbuilder(cellval, opts, rwdat, _act) {
        return "@Htm.ActionLink()";
    }
    

    【讨论】:

    • 格式化程序中的函数调用:'prepareLinks' 不带引号
    • 并且不要忘记在 js 字符串中使用反斜杠返回 "@Html.ActionLink(\"Open this\",\"Test\")";
    • 或使用'@Html.ActionLink("Open this","Test")'
    • 我使用了formatter 选项我已经添加了我的解决方案here。谢谢!
    【解决方案3】:

    感谢@tpeczek 和@user1534482

    我终于找到了解决办法,

    colModel: [
        ...
        { name: 'Open',
            formatter: function (cellvalue, options, rowObject) {
                return '<a href="/ControllerName/Test/?myId=' + cellvalue + '">' + "Open" + '</a>';
            } 
        },
        ...
    ],
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-04-14
      • 2011-07-02
      • 2014-02-09
      • 1970-01-01
      • 2012-01-19
      • 1970-01-01
      相关资源
      最近更新 更多