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

jqGrid 4.2使用非网格字段的自定义搜索,jqgrid,Jqgrid,我将jqGrid 4.2与filterToolbar一起使用,效果非常好。我想为不属于colModel的查询(服务器端)字段添加某种类型的自定义搜索 在4.0之前,我会使用filterGrid,大致如下: $('#关键字').jqGrid('filterGrid','#票证网格', { gridModel:false, 过滤器模型:[ {label:'Keyword',name:'Keyword',stype:'text'}, {标签:'includeClosed?',名称:'includeCl

我将jqGrid 4.2与
filterToolbar
一起使用,效果非常好。我想为不属于
colModel
的查询(服务器端)字段添加某种类型的自定义搜索

在4.0之前,我会使用
filterGrid
,大致如下:

$('#关键字').jqGrid('filterGrid','#票证网格',
{
gridModel:false,
过滤器模型:[
{label:'Keyword',name:'Keyword',stype:'text'},
{标签:'includeClosed?',名称:'includeClosed',样式:'checkbox'}
]
});
我知道这不再受支持,而且
stype:'checkbox'
无论如何都不起作用


如何使用新的搜索模块/机制做到这一点?

如果我知道您已经在页面上更正了,例如在网格上方,一些控件(文本输入、选择、复选框)允许用户定义用户希望在网格中看到的结果的附加条件。在这种情况下,您可以按照中所述的方式将
postData
与方法(函数)一起使用

如果任何类型的网格刷新:请求从中过滤数据、更改页面或页面大小、更改排序等都将始终跟随到服务器的Ajax请求。在这种情况下,jqGrid的
postData
选项中的属性将像其他标准参数一样添加(
sidx
sord
页面
,…)。如果将
postData
属性中的一个定义为函数(如果是
postData
的方法),则将调用该函数来构造将发送到服务器的参数。因此,来自自定义搜索控件(文本输入、选择、复选框)的当前信息将发送到服务器。您只需使用后端上的参数即可过滤结果

所以你必须自己定义字段。例如,使用id=“keyword input”进行文本输入,使用id=“includeClosed”进行复选框,然后使用中的
postData
,格式如下:

$('#关键字').jqGrid(
//…其他jqGrid选项
postData:{
关键字:函数(){return$('#关键字输入').val();},
includeClosed:function(){return$('#includeClosed')是(':checked');},
}
});

这很好,远没有我想做的那么复杂。谢谢。要将关键字和includeclosed添加到postData筛选器属性吗?在这种情况下,通过服务器不需要其他参数。@Andrus:
关键字
includeclosed
,而不是标准过滤器的一部分。有些外场不属于栅格的一部分。请参阅问题的标题:“使用非网格字段进行自定义搜索”。我询问了如何扩展filters属性,该属性会像
一样传递到服务器。。关键字=$(“#关键字输入”).val()和includeClosed=$(“#includeClosed”)是(“:checked”)
服务器可以构造where子句,无需附加参数needed@Andrus:对不起,我还是听不懂。你的问题是关于我的回答,还是关于你遇到的其他情况的新问题?
postData
的属性
filters
将由jqGrid作为字符串(序列化对象)构造,并且只能包含网格中的字段。因此,如果您打开搜索对话框,过滤器将被解码并填充到搜索对话框中。我不明白你想要什么,和我的答案有什么关系。