我有一种情况,我正在使用formatter: 'select'
作为我的一个colModel。例如:
{ key: false, name: 'Col5Id', index: 'Col5Id', editable: true, width: 140, edittype: 'select', editoptions: { value: getKeyValuePairsForDisplay('/Controller/Action', 'Id', 'Name') }, formatter: 'select' },
这样可以正常工作,但我还需要将该值转换为超链接(通常由formatter: 'showlink'
完成,但我无法使用它,因为jqGrid只接受单个格式化程序)。我研究的解决方法是使用自定义格式化程序并完成此操作。
从this question开始,自定义格式化程序似乎可以根据底层数据的值调用“多个格式化程序”。怎么会这样做呢?
感谢任何帮助,谢谢!
答案 0 :(得分:0)
知道了!
有几种方法可以做到。
首先,我将colModel更改为:
{ key: false, name: 'Col5Id', index: 'Col5Id', editable: true, width: 140, edittype: 'select', editoptions: { value: getKeyValuePairsForDisplay('/Controller/Action', 'Id', 'Name') }, formatter: myFormatter },
然后,我将myFormatter
构建为:
function myFormatter(cell, options, row) {
//Method 1 - Manually specify URL (worked better in my case)
var selectValue = $.fn.fmatter.select(cell, options, row);
return "<a href='/Controller/Action' title='View' id='viewId'>" + selectValue + "</a>";
//Method 2 - Pass the formatted value from the select formatting into the showlink function
return $.fn.fmatter.showlink(($.fn.fmatter.select(cell, options, row), options);
}
还发现this answer by Oleg偶然发现了另一种完成任务的方法。
希望其他人从中受益!干杯!