代码之家  ›  专栏  ›  技术社区  ›  Yasser Shaikh

在ASP.NET MVC 3 Razor中的JqGrid列中添加ActionLink

  •  1
  • Yasser Shaikh  · 技术社区  · 14 年前

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

    我希望在jqGrid中添加2列以及其余列。

    我要添加的列是

    • 编辑
    • 删去

    这些列的值我想成为 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)
    
    3 回复  |  直到 14 年前
        1
  •  5
  •   tpeczek Joshua H    14 年前

    你应该看看 显示链接 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 选项)。如果您需要传递一些附加参数,请查看 addParam 中的选项 documentation

    更新

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

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

    哪里 op formatoptions 对象和 cellvalue 是粘贴到jqGrid的数据中的列的值。

        2
  •  2
  •   maxs87    14 年前

    你可以像这样使用自己的格式化程序

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

    and add function
    
    function linkbuilder(cellval, opts, rwdat, _act) {
        return "@Htm.ActionLink()";
    }
    
        3
  •  2
  •   Yasser Shaikh    14 年前

    感谢@tpeczek和@user1534482

    我终于找到了解决方案,

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