JqG​​rid工具栏搜索 - 在字段中设置searchdata而不是直接发布数据

时间:2011-12-15 19:21:55

标签: jquery jqgrid

我需要更改过滤器工具栏的默认搜索行为。 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});

1 个答案:

答案 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

然后,您可以获取“过滤器”数组并使用它执行您需要的操作。

Read more about stringResult

此外,我发现使用loadonce: true选项更容易,因此我根本不必处理搜索查询。不是可定制的,而是更容易。

Read more about loadonce