2013-10-10 54 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')); 
     } 
});