2012-06-15 64 views
0

当您注释掉'sopt'选项但没有注释选项 我提出jsfiddle here时,带有filtertoolbar选项的网格正常工作。在我的真格的我有cmTemplate specifed在$.extend($.jgrid.defaults,{}) - 它还是引起了同样的问题jqGrid cmTemplate选项是否会干扰filtertoolbar?

$('#Table').jqGrid({ 
    cmTemplate: { 
     searchoptions: { 
      // sopt: ['eq', 'ne', 'cn'] //un comment this line then run again and try to use filtere to see the difference 
     } 
    }, 
    datatype: 'local', 
    data: [{ 
     Code: 'code1'}, 
    { 
     Code: 'code2'}, 
    { 
     Code: 'code3'}], 
    colNames: ['Code'], 
    colModel: [{ 
     name: 'Code', 
     index: 'Code'}], 
    pager: '#Pager' 
}).jqGrid('filterToolbar', { 
    searchOnEnter: false, 
    defaultSearch: 'cn' 
}).trigger('reloadGrid'); 

回答

1

我看不到代码中的任何问题,我所有的电网之外。如果设置

cmTemplate: { 
    searchoptions: { sopt: ['eq', 'ne', 'cn'] } 
} 

您在不具有设定的所有列添加searchoptions.sopt。工具栏过滤只能使用每列一个搜索操作。 jqGrid使用参数filterToolbar进行搜索,但为了能够对某些列进行其他搜索操作,可以从searchoptions.sopt数组的第一个操作(例如参见the answer)中覆盖它。 这是非常重要的功能,因为它真的需要。

所以包括searchoptions: { sopt: ['eq', 'ne', 'cn'] }选项所有列几乎覆盖的选项filterToolbardefaultSearch: 'cn'defaultSearch: 'eq'。完全按照你发布的演示的方式工作。

+0

所以如果我有'cn'作为第一选择在sopt过滤器的作品,我想我可以忍受那个 –

+0

@chohi:是的。你应该明白为什么使用'searchoptions.sopt [0]'的规则是必需的。例如,如果你有'formatter:'选择“,editoption:{value:”:All; 1:one; 11:elf“}'。它会在搜索工具栏中产生下拉菜单。如果您将使用'default'搜索:'cn''中的'cn'操作来生成列:“包含1”操作,以防用户选择“one”选项。因此,不是只选择具有'1'的值,也会找到'11',并且过滤后的网格将显示具有“一个”和“小精灵”的行。要解决这个问题,必须定义'sopt',其中'searchoptions.sopt [0] ='eq'' – Oleg