2013-10-10 131 views
1

我正在使用jqgrid創建網格。這其中有一個主標題和數據在其中,以及「預先搜索」。不幸的是他們兩個都使用相同的getColModel,並且我想在事先搜索時使用不同的標題和colname。例如,我有這樣的ColModel jqgrid不同的標籤名稱

getColModel: -> 
    [ 
     {name:'dispId', label: i18n('ProjectList.dispId'), classes:'grid_col', width:6, searchoptions:{sopt:filterOperators.string}, formatter: ((cellvalue, options, rowObject) -> "<a href=\"#{url("/project/#{options.rowId}/view")}\">#{cellvalue}</a>")} 

東西]

和國際化(「ProjectList.disp」)都在列和列名高級搜索裏顯示。我的英語真的很糟糕,但我希望你明白我想做什麼 - 我想在主網格和預先搜索選項中使用不同的標題,並且我不想僅在我自己的* .js腳本中更改jqgrid源代碼中的任何內容。 (也許在colModel一些屬性?找不到一想,我正在尋找解決方案很多)\

高級搜索選項我叫「尋呼機」我相信

我將此添加到我的initgrid

afterRedraw: -> 
       $("#{gridId} select").find("option[value='expectedRealizationDate']").html(i18n('ProjectList.expectedRealizationDate')) 
       $("#{gridId} select").find("option[value='closing']").html(i18n('ProjectList.closing')) 

它的工作原理,但只有當我打開高級搜索,當我添加新的過濾器標籤名稱去相親再次

回答

1

grid.filter.js的jqGrid的代碼明確使用colModel namelabel生成在下拉選項:

str += "<option value='"+that.p.columns[i].name+"'" +selected+">"+that.p.columns[i].label+"</option>"; 

所以,你是不是要能夠達到你想要使用什麼jqGrid的API,除非修改做出的jqGrid本身。


也就是說,無需修改jqGrid的你也許可以破解四周,使用afterRedraw功能與自定義的更換標籤。該代碼將不漂亮,但你也許能得到它的工作...

+0

以及我幾乎做到了,但仍然不工作那麼好。我加入到我的init電網'\t \t \t afterRedraw: - > \t \t \t \t $( 「#{gridId}選擇」)找到( 「選項[值= 'expectedRealizationDate']」)HTML(i18n的('ProjectList ('#{gridId} select「)。find(」option [value ='closing']「)。html(i18n('ProjectList.closing'))'it works but但是直到我「添加」新的搜索選項,當我關閉高級搜索並重新打開它時,字段名出現,你知道我在做什麼錯了嗎?我將這段代碼添加到我的主要問題中,導致編碼在這裏不起作用:| – ojciecmatki

+0

不確定,也許你需要添加另一個事件處理程序。您可能需要查看文檔並查看是否有其他可以繼續使用的處理程序。 –

+0

是啊meaby,但在doc「afterRedraw」=「[...]過濾器每次重新繪製時,當我們添加或刪除規則或字段」,所以它應該工作,謝謝你的答案btw – ojciecmatki

1

如果有人會懷疑怎麼辦呢下面有一個答案

$(@gridId).jqGrid('navGrid',@pagerId, {}, {}, {}, {}, {    
     afterRedraw: function() { 
       $("select").find("option[value='expectedRealizationDate']") 
          .html(i18n('ProjectList.expectedRealizationDate')); 
       $("select").find("option[value='closing']") 
          .html(i18n('ProjectList.closing')); 
     } 
});