jqGrid - 如何通过自定义格式化程序提供多个预定义的格式化程序

时间:2015-03-11 21:00:03

标签: javascript jquery jqgrid jqgrid-formatter

我有一种情况,我正在使用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开始,自定义格式化程序似乎可以根据底层数据的值调用“多个格式化程序”。怎么会这样做呢?

感谢任何帮助,谢谢!

1 个答案:

答案 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偶然发现了另一种完成任务的方法。

希望其他人从中受益!干杯!