我的 jqGrid 工作dynamically.So 所有选项都是动态加载的。此选项是用java生成的 Map<String,Object> 所有选项工作得很好,但de内的函数名 map/opts 不工作。这是 json 用java生成的map。

"colModel":[...{"formatter":"myFunction","index":"","name":""}]

我没有调试 jqgrid.src.js 然而,我认为问题在于 eval.不调用"myFunction",返回undefined。

有帮助吗?

解决方案

formatter 选项可以是一个字符串,如果它是预定义的格式化程序之一,但根据 自定义格式化程序的jqGrid文档:

您可以为特定列定义自己的格式化程序。通常这是一个功能。

所以jqGrid期望传递一个函数。这就是为什么 myFunction 工作,但 "myFunction" 没有。无论如何,要解决您的问题,您需要输出代码:

"formatter": myFunction


要深入一点,您可以在jqGrid源文件中看到 网格。基地。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的 然后,我会期望在网格尝试使用它时发生错误。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top