Asp.net mvc 3 在ASP.NET MVC 3中的JqGrid列中添加ActionLink

Asp.net mvc 3 在ASP.NET MVC 3中的JqGrid列中添加ActionLink,asp.net-mvc-3,jqgrid,html.actionlink,Asp.net Mvc 3,Jqgrid,Html.actionlink,我正在使用jqGrid与ASP.NETMVC3和Razor 我希望在jqGrid中添加2列以及其他列 我要添加的列是 编辑 删除 这些列的值是我想要的ActionLink 如何将ActionLink添加到JqGrid的列中? 请在这方面指导我 更新1:在@user1534482的帮助下,我尝试了这个,但没有成功 colModel: [ ... { name: 'Open', formatter: 'prepareLinks' }, ... ], function

我正在使用jqGrid与ASP.NETMVC3和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)
语法错误:缺少;声明前
[在此错误上中断]
返回“”;
SomeController(第92行第41列)
您应该看看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>
其中,
op
formatoptions
对象,
cellvalue
是粘贴到jqGrid的数据中的列值。

您应该查看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>

其中,
op
formatoptions
对象,
cellvalue
是从粘贴到jqGrid的数据中得到的列的值。

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

 colModel: [

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


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

 colModel: [

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


感谢@tpeczek和@user1534482

我终于找到了解决办法

colModel: [
    ...
    { name: 'Open',
        formatter: function (cellvalue, options, rowObject) {
            return '<a href="/ControllerName/Test/?myId=' + cellvalue + '">' + "Open" + '</a>';
        } 
    },
    ...
],
colModel:[
...
{name:'打开',
格式化程序:函数(cellvalue、options、rowObject){
返回“”;
} 
},
...
],

感谢@tpeczek和@user1534482

我终于找到了解决办法

colModel: [
    ...
    { name: 'Open',
        formatter: function (cellvalue, options, rowObject) {
            return '<a href="/ControllerName/Test/?myId=' + cellvalue + '">' + "Open" + '</a>';
        } 
    },
    ...
],
colModel:[
...
{name:'打开',
格式化程序:函数(cellvalue、options、rowObject){
返回“”;
} 
},
...
],

谢谢。但是我尝试了
{name:'Open',formatter:'showlink',formattoptions:{baseLinkUrl:'@Url.Action(“Test”)',idName:'FolderId'}},
但是仍然没有生成链接,只有id显示在column@Yasser我已经更新了答案,详细说明了链接是如何生成的,请检查您是否为数据中的列返回了正确的值(通常它应该是链接的文本)。感谢您的链接,我通过使用
格式化程序
选项实现了这一点,我还发布了我最终使用的答案。再次感谢:)谢谢。但是我尝试了
{name:'Open',formatter:'showlink',formattoptions:{baseLinkUrl:'@Url.Action(“Test”)',idName:'FolderId'}},
但是仍然没有生成链接,只有id显示在column@Yasser我已经更新了答案,详细说明了链接是如何生成的,请检查您是否为数据中的列返回了正确的值(通常它应该是链接的文本)。感谢您的链接,我通过使用
格式化程序
选项实现了这一点,我还发布了我最终使用的答案。再次感谢:)函数调用格式化程序:“PrepareLink”不带引号,不要忘记在js字符串中反斜杠双引号返回“@Html.ActionLink(\'openthis\',\'Test\”);或者使用'@Html.ActionLink(“打开此”,“测试”)'我使用
格式化程序
选项添加了我的解决方案。谢谢函数在格式化程序中调用:“prepareLink”而不带引号,并且不要忘记在js字符串中反斜杠双引号返回“@Html.ActionLink(\'openthis\,'Test\”);或者使用'@Html.ActionLink(“打开此”,“测试”)'我使用
格式化程序
选项添加了我的解决方案。谢谢