我的jqGrid
工作是动态的。所以所有选项也都是动态加载的。这个选项是用java生成的,Map<String,Object>
所有选项都很好用,但是de里面的函数名map/opts
不起作用。这是json
用java生成的地图。
"colModel":[...{"formatter":"myFunction","index":"","name":""}]
我还没有调试jqgrid.src.js
,我认为问题出在eval
. 未调用“myFunction”并返回未定义。
如果它是预定义的格式化程序之一,则该formatter
选项可以是字符串,但根据自定义格式化程序的 jqGrid 文档:
您可以为特定列定义自己的格式化程序。通常这是一个函数。
所以 jqGrid 期望一个函数被传递。这就是为什么myFunction
有效但"myFunction"
无效的原因。无论如何,要解决您的问题,您需要输出代码:
"formatter": myFunction
$.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中还没有该函数,那么我预计当网格尝试使用它时会发生错误。