如何在jqgrid的基本链接URL中添加额外参数

时间:2015-02-12 06:44:59

标签: jqgrid jqgrid-formatter

我想在jqgrid中添加一个额外的参数。以下代码无效

 formatoptions:{baseLinkUrl:'loadHoldCode/id=?', addParam: '&customerId='+$('#custIdHidden').val()},

但是如果我对参数值进行硬编码,则会按照我的意愿传递该值。

 formatoptions:{baseLinkUrl:'loadHoldCode/id=?', addParam: '&customerId="123"},

请帮助我应该改变什么,或者我应该采取其他方法。

更新: 使用自定义Formater,我已经尝试过但仍然没有看到任何链接

    name: 'holdCode', 
    width: 100, 
    formatter:function (cellvalue, options, rowObject) {
        return '<a src="loadHoldCode/id=?&customerId=' + rowObject.customerId + '">' +
            cellvalue + "</a>";},                           
    searchoptions:{sopt: ['cn', 'eq', 'ne', 'lt', 'le', 'gt', 'ge', 'nu', 'nn', 'in', 'ni']}, 
    sortable: true,
    editable: false

2 个答案:

答案 0 :(得分:2)

我不想使用predefined formatter showlink,而是希望实现自定义格式化程序的使用。

如果您有一个隐藏列,请自行构建src

{ name: 'customerId', index: 'customerId', hidden: true },
{ name: 'link', index: 'link', title: false,
    formatter: function (cellvalue, options, rowObject) {
        return '<a href="loadHoldCode/id=?&customerId=' + rowObject.customerId + '" target="_blank">' +
            cellvalue + "</a>";
    }
}

答案 1 :(得分:0)

首先,我想澄清原始代码的原因

formatoptions: {
    baseLinkUrl: 'loadHoldCode/id=?',
    addParam: '&customerId='+$('#custIdHidden').val()
},

无法正常工作。这意味着对应的formatoptions项的colModel属性应该初始化,其对象包含两个属性baseLinkUrladdParam。在初始化期间,两个属性的值将计算为一次。因此,在创建网格时,您将获得$('#custIdHidden').val()

最好使用像

这样的结构
formatoptions: {
    baseLinkUrl: 'loadHoldCode/id=?',
    addParam: function () {
        return '&customerId=' + $('#custIdHidden').val();
    }
},

但只有当jqGrid测试addParam的值是否有效时,它才会起作用。格式化程序"showlink"不会对函数的选项进行任何测试(请参阅jqGrid代码的the line)。所以**您无法使用formatter: "showlink"来实现您的要求

我建议您使用custom formatter(请参阅here相应的代码示例,其中$.param支持属性作为函数)或使用formatter: "dynamicLink"您可以下载{ {3}}(见jqGrid.dynamicLink.js)。它是非常简单且非常灵活的格式化程序。您可以查看格式化程序herehere的使用的更多详细信息和示例。