Javascript jqGrid,无法使showlink格式化程序工作

Javascript jqGrid,无法使showlink格式化程序工作,javascript,jquery,jqgrid,Javascript,Jquery,Jqgrid,您好,我正试图让showlink格式化程序工作以下从trirand 我想要实现的是一个超链接,我可以单击该超链接获得编辑视图,以更新/编辑记录。但由于某些原因,我想显示超链接的列是空的 这是我的代码片段,链接是最后一列: <script type="text/javascript"> $(document).ready(function () { $("#grid_products").jqGrid({ jsonReader: {

您好,我正试图让showlink格式化程序工作以下从trirand

我想要实现的是一个超链接,我可以单击该超链接获得编辑视图,以更新/编辑记录。但由于某些原因,我想显示超链接的列是空的

这是我的代码片段,链接是最后一列:

<script type="text/javascript">
    $(document).ready(function () {
        $("#grid_products").jqGrid({
            jsonReader: {
                repeatitems: false,
                id: 'Guid'
            },
            url: '/Product/jqgridJSON/',
            datatype: 'json',
            mtype: 'GET',
            colNames: ['ProductCode', 'ProductDescription', 'DefaultSellPrice', 'LastCost', 'Edit'],
            colModel: [
                { name: 'ProductCode', index: 'Productcode' },
                { name: 'ProductDescription', index: 'ProductDescription' },
                { name: 'DefaultSellPrice', formatter: 'currency', index: 'DefaultSellPrice' },
                { name: 'LastCost', formatter: 'currency', index: 'LastCost' },
                { name: 'MyLink',
                    edittype: 'select',
                    formatter: 'showlink',
                    formatoptions: { baseLinkUrl: '/Product/Update/', idName: 'Guid' }
                },
                ],
            pager: '#pager',
            rowNum: 10,
            rowList: [20, 50, 100, 200],
            sortname: 'ProductCode',
            sortorder: 'asc',
            viewrecords: true,
            width: 'auto',
            height: 'auto',
            caption: 'Products'
        }).navGrid('#pager', { edit: true, add: false, del: false });
    });
</script>

@{
    ViewBag.Title = "JSONGrid";
}

<h2>JSONGrid</h2>
<table id="grid_products"></table>
<div id="pager"></div>
jqGrid中的格式化程序适用于currency,但由于某些原因,它没有显示为hyperlink

更新:

通过使用自定义格式化程序使其正常工作

...
{ name: 'MyLink',
                    formatter: myLinkFormatter,
                },
...

function myLinkFormatter (cellvalue, options, rowObjcet) {
    return '<a href = "/Product/Edit/' + options.rowId + '">Edit this product</a>';
}

我假设您在JSON输入中没有为“MyLink”列填充任何值。因此,超链接为空。如果您想在列中放置带有任何固定文本的链接,我建议您使用。有关示例,请参见

另一种可能的解决方法是使用格式化程序:“showlink”,并将jsonmap:function{return Edit;}包含到“MyLink”列定义中。在这种情况下,不需要在JSON数据中包含每行数据的MyLink:Edit。重要的是要理解,这个技巧只在使用jsonReader:{repeatitems:false}的情况下有效,因此它应该适用于您的网格

如果您还有其他问题,您应该在问题文本中包含您使用的JSON数据

对当前代码的一些小注释:

edittype:“select”与格式化程序“showlink”一起使用毫无意义。如果要使用格式化程序“showlink”,则应将其删除。 参数height:'atuo'应为height:'auto'。 寻呼机:$‘寻呼机’最好替换为‘寻呼机’。如果使用pager:$'pager',jqGrid将在内部将其替换为pager:'pager',对象$'pager'将被丢弃。 如果使用jsonReader:{id:'Guid'}并且不打算向用户显示Guid,则可以从网格中删除“Guid”列。您案例中的Guid id将用于分配网格元素表行的id。因此,您不需要两次保存相同的信息
谢谢@Oleg,我根据您的反馈修改了代码。关于'select'和'showlink',这对我来说也没有意义,但因为我对jQuery和Javascript非常陌生,我几乎完全是从jqGrid示例中复制的,它在我问题顶部的链接中。如果你认为这个例子是错误的,请告诉我。@pstar:这是文档中的一个错误。很好,文档是wiki文档,所以像我这样的每个人都可以修改它。所以我刚刚从中删除了edittype:“选择”。我写的所有其他内容都独立于示例。您是否成功地修改了代码?您选择了上述哪种方式?再次感谢您修改Wiki。由于我现在需要固定文本,我正在使用自定义格式化程序,它现在正在工作。但是我在你的答案中使用了“函数格式化程序”而不是“格式化程序:函数”。@pstar:看看,或者在formatter:function中都使用自定义格式化程序。如果您查看示例的源代码,您将看到与您所做的不同。无论如何,我很高兴看到你们现在至少有一个工作示例。@pstar:还有一件事。因为你不使用投票,我想让你注意以下简单的规则:当你看到问题的新答案时,你可以阅读,点击答案左边的向上箭头,将有用的答案投上。答案通常按投票分数排序,因此投票率最高的答案会浮到顶部。其他用户也将对您的问题的答案进行投票。为了不被误解,我建议你遵守规则,使用投票。