我需要更改过滤器工具栏的默认搜索行为。 documentation州:
执行搜索时,postData数组将填充搜索所需的数据。
因此,如果您有一个带有id和name列的网格,并且您使用这些列过滤,那么您将获得一个如下所示的查询字符串:
?_search=true&nd=1323976178454&rows=20&page=1&sidx=&sord=asc&id=11&name=jr
我想要的是这样的东西
?_search=true&nd=1323976178454&rows=20&page=1&sidx=&sord=asc&search[id]=11&search[name]=jr
如何实现这一目标?
我想出如果我像这样定义我的colModel:
{"name":"search[ID]","label":"id","jsonmap":"ID"}
它做我想要的,但这似乎是hackish。有更好的解决方案吗?
这是我网格的js:
$("#contactsGrid").jqGrid({
"url":"\/contacts",
"datatype":"json", ,
"viewrecords":true,
"jsonReader":{
"root":"items",
"page":"page",
"total":"total",
"records":"records",
"repeatitems":false,
"id":0
},
"colModel":[
{"name":"ID","label":"id","jsonmap":"ID","searchoptions":[],
"formatter":"showlink","formatoptions":{"baseLinkUrl":"\/contacts"}},
{"name":"Name","label":"Name","jsonmap":"Name"}
],
"colNames":["id","name"],
"pager":"contactsGrid-pager"
}).navGrid("#contactsGrid-pager",
{"edit":false,"add":false,"del":false,"view":false});
$("#contactsGrid").filterToolbar({"autosearch":true});
答案 0 :(得分:0)
您可以使用stringResult:true
以更有条理的方式获取结果。
$("#contactsGrid").jqGrid('filterToolbar',{stringResult: true, autosearch:true});
输出:
_search: true
filters: {"groupOp":"AND","rules":[{"field":"name","op":"bw","data":"jr"}]}
nd: 1323990002421
page: 1
rows: 10
sidx: date_won
sord: desc
然后,您可以获取“过滤器”数组并使用它执行您需要的操作。
此外,我发现使用loadonce: true
选项更容易,因此我根本不必处理搜索查询。不是可定制的,而是更容易。