繁体   English   中英

jqGrid,无法让showlink formatter工作

[英]jqGrid, couldn't get showlink formatter working

嗨,我想通过从trirand 这个文件来获得showlink formatter。

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

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

<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的格式化程序正在使用货币,但出于某种原因,它只是没有显示超链接。

更新:

通过使用自定义格式化工具使其工作。

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

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

我想你在'MyLink'列的JSON输入中没有填充任何值。 因此,超链接为空。 如果您想将链接与列中的任何固定文本放在一起,我建议您使用自定义格式化程序 有关示例,请参阅最近的答案

formatter: 'showlink'一种可能的解决方法是使用formatter: 'showlink'并包含jsonmap: function() { return "Edit"; } jsonmap: function() { return "Edit"; }到'MyLink'列定义。 在这种情况下,您不需要在JSON数据中包含"MyLink":"Edit"每行数据。 重要的是要理解这个技巧仅在使用jsonReader: {repeatitems: false} (因此它应该适用于您的网格)。

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

您当前代码的一些小评论:

  • edittype: 'select'的用法edittype: 'select'formatter: 'showlink'没有意义。 如果你要使用formatter: 'showlink'你应该删除它formatter: 'showlink'
  • 参数height: 'atuo'应为height: 'auto'
  • pager: $('#pager')最好替换为pager: '#pager' pager: $('#pager') pager: '#pager' 如果使用pager: $('#pager') ,jqGrid将在内部将其替换为pager: '#pager' $('#pager') ,对象$('#pager')将被丢弃。
  • 如果您使用jsonReader: { id: 'Guid'}并且您不打算向用户显示guid,则可以从网格中删除 'Guid'列。 id (您的情况下为Guid )将用于指定网格的<tr>元素(表格行)的ID。 因此,您不需要两次保存相同的信息

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM