2012-05-22 63 views
2

jqGrid工作dynamically.So所有選項動態加載了。 此選項與Java Map<String,Object> 所有選項都很好地工作產生的,但內德map/opts函數名不起作用。 這是用java生成的地圖json的jqGrid colModel動態格式

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

我沒有調試jqgrid.src.js但我認爲這個問題是與eval。 未調用「myFunction」,並返回undefined。

+0

你的問題是有點難以遵循,但如果您有格式化的問題,你應該能夠僅僅把它定義爲'「格式化」:myFunction'然後'當電網需要myFunction'將被調用格式化該列。但是你提到'eval' ...這裏還有其他的東西嗎? –

+0

opts在HashMap 中。 Map opts = new HashMap (); opts.put(「formatter」,「myFunction」); opts.put(「index」,「」); opts.put(「name」,「」); 然後,用於colModel的opts格式化程序: {「formatter」:「myFunction」,「index」:「」,「name」:「」} – user1404404

+0

這是js文件上的功能。 函數myFunction的(cellvalue,期權,rowObject){ \t返回 「Click here」; } 我不爲什麼不jqGrid的調用myFunction的? 隨着我得到選擇,上面的一個節目,並把它的工作reall文件; 這裏工作 colModel:[ \t ... \t { 「格式化」:myFunction的, 「指數」: 「」, 「名」: 「」} \t //工作 ], 這裏不行 colModel: [ \t ... \t { 「格式化」: 「myFunction的」, 「指數」: 「」, 「名」: 「」} \t //注意:在真正的文件字符串沒有工作過myFunction的。 ], – user1404404

回答

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那麼我希望當電網試圖用它來發生錯誤。

+0

是的,夥計。 要使用引號括起來的函數,我們可以格式化模塊,以便它可以很容易地擴展。 關於創建通用格式化函數 – user1404404

+0

的更多細節所以...這是否回答了您的問題? –