【问题标题】:JqGrid colModel dynamic formatterJqG​​rid colModel 动态格式化程序
【发布时间】:2012-05-22 19:51:28
【问题描述】:

我的jqGrid 动态工作。所以所有选项也都是动态加载的。 此选项使用 java Map<String,Object> 生成 所有选项都运行良好,但 de map/opts 中的函数名称不起作用。 这是json用java生成的地图。

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

我还没有调试jqgrid.src.js,我认为问题出在eval。 未调用“myFunction”,返回未定义。

【问题讨论】:

  • 您的问题有点难以理解,但是如果您对格式化程序有疑问,您应该可以将其定义为"formatter":myFunction,然后在网格需要时调用myFunction格式化该列。但是你提到eval...这里还有其他事情吗?
  • 选项在 HashMap 中。 Map opts = new HashMap(); opts.put("格式化程序","myFunction"); opts.put("索引",""); opts.put("名称","");然后,colModel 输出的 opts 格式化程序: {"formatter":"myFunction","index":"","name":""}
  • 这是js文件上的函数。 function myFunction(cellvalue, options, rowObject){ return "点击这里";我不知道为什么jqGrid没有调用myFunction?我选择了上面的节目并放在真实文件上它可以工作;这里工作 colModel:[ ... {"formatter":myFunction,"index":"","name":""} //work ], 这里不工作 colModel:[ ... {"formatter":"myFunction ","index":"","name":""} // 注意:真实文件中带字符串的myFunction也不行。 ],
  • 嗯,jqGrid 中的所有选项都可以正常工作。

标签: jquery jqgrid formatter


【解决方案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 中不存在该函数,那么我预计当网格尝试使用它时会发生错误。

【讨论】:

  • 是的,伙计。要使用用引号括起来的函数,我们可以格式化模块以便于扩展。有关创建通用格式化程序函数的更多详细信息
  • 那么...这回答了你的问题吗?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-04-08
  • 1970-01-01
相关资源
最近更新 更多