jqGrid 4.2使用非网格字段进行自定义搜索

时间:2011-12-09 21:38:54

标签: jqgrid

我正在使用带有filterToolbar的jqGrid 4.2,效果很好。我想在查询(服务器端)字段中添加某种类型的自定义搜索,这些字段不属于colModel

在4.0之前,我会使用filterGrid这一行:

$('#keyword').jqGrid('filterGrid', '#ticket-grid',
    {
       gridModel: false, 
       filterModel: [
            { label: 'Keyword', name: 'keyword', stype: 'text'},
            { label: 'Inclued Closed?',name : 'includeClosed', stype: 'checkbox'}
       ]
     });

我知道不再支持此功能,stype: 'checkbox'无论如何都无效。

如何使用新的搜索模块/机制执行此操作?

1 个答案:

答案 0 :(得分:2)

如果我理解你是正确的,你已经在页面上,例如网格上方,一些控件(文本输入,选择,chechbox),允许用户定义用户想要在网格中看到的结果的其他标准。在这种情况下,您可以the old answer中描述的方式使用postData方法(函数)。

如果有任何类型的网格刷新:请求过滤来自searching toolbar的数据,更改页面或页面大小,更改排序等将始终遵循对服务器的Ajax请求。如果jqGrid的postData选项的属性将像其他标准参数(sidxsordpage,...)一样添加。如果将postData的属性中的一个定义为函数(如果是postData的方法),则将调用该函数以构造将发送到服务器的参数。因此,您自定义搜索控件(文本输入,选择,chechbox)的当前信息将发送到服务器。这样您只需要使用后端的参数来过滤结果。

所以你必须自己定义字段。例如,输入id =“keyword-input”的文本和带有id =“includeClosed”的checkbos,然后使用postData来形成以下形式:

$('#keyword').jqGrid(
    // ... other jqGrid options
    postData: {
        keyword: function () { return $('#keyword-input').val(); },
        includeClosed: function () { return $('#includeClosed')is(':checked'); },
    }
});