我的jqGrid
动态工作。所有选项也动态加载。
使用java Map<String,Object>
生成此选项
所有选项都运行良好,但de map/opts
中的函数名称不起作用。
这是使用java生成的json
映射。
"colModel":[...{"formatter":"myFunction","index":"","name":""}]
我还没有调试jqgrid.src.js
,我认为问题出在eval
上。
不调用“myFunction”并返回undefined。
答案 0 :(得分:1)
formatter
选项可以是字符串(如果它是预定义的格式化程序之一),但根据jqGrid docs for custom formatters:
您可以为特定列定义自己的格式化程序。通常这是一个功能。
因此jqGrid期望传递一个函数。这就是为什么myFunction
有效但"myFunction"
没有用的原因。无论如何,要解决您的问题,您需要输出代码:
"formatter": myFunction
<小时/> 为了更深入,您可以在jqGrid源文件grid.base.js中看到格式化程序直接使用函数,但是如果传递了一个字符串,则该字符串将传递给
$.fn.fmatter
:
formatter = function (rowId, cellval , colpos, rwdat, _act){
var cm = ts.p.colModel[colpos],v;
if(typeof cm.formatter !== 'undefined') {
var opts= {rowId: rowId, colModel:cm, gid:ts.p.id, pos:colpos };
if($.isFunction( cm.formatter ) ) {
v = cm.formatter.call(ts,cellval,opts,rwdat,_act);
} else if($.fmatter){
v = $.fn.fmatter(cm.formatter, cellval,opts, rwdat, _act);
} else {
v = cellVal(cellval);
}
} else {
v = cellVal(cellval);
}
return v;
},
如果jquery.fmatter.js中不存在该功能,那么当网格尝试使用该功能时,我预计会发生错误。