我想在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
答案 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
属性应该初始化,其对象包含两个属性baseLinkUrl
和addParam
。在初始化期间,两个属性的值将计算为一次。因此,在创建网格时,您将获得$('#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
)。它是非常简单且非常灵活的格式化程序。您可以查看格式化程序here和here的使用的更多详细信息和示例。