オプションが事前定義されたフォーマッターの1つである場合、formatter
オプションは文字列にすることができますが、カスタムフォーマッターのjqGridドキュメントによると:
特定の列に対して独自のフォーマッターを定義できます。通常、これは関数です。
したがって、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にまだ存在しない場合、グリッドがそれを使用しようとするとエラーが発生すると予想されます。