JqGrid colModel动态格式化程序
我的jqGrid
动态工作。所有选项都是动态加载的。 使用java Map
生成此选项所有选项都可以正常工作,但de map/opts
的函数名称不起作用。 这是用java生成的json
映射。
"colModel":[...{"formatter":"myFunction","index":"","name":""}]
我还没有调试jqgrid.src.js
,我认为问题与eval
。 不调用“myFunction”并返回undefined。
如果formatter
选项是预定义的格式化程序之一,则格式化formatter
选项可以是字符串,但根据自定义格式化程序的jqGrid文档 :
您可以为特定列定义自己的格式化程序。 通常这是一个function。
所以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中不存在该函数,那么当网格尝试使用它时我会发生错误。