jqGrid清除搜索条件

时间:2010-10-21 16:36:43

标签: jquery search jqgrid

目前,我已启用网格设置并启用了搜索功能。当我运行搜索时,一切正常,我可以将好数据返回到网格。我看到URL上的“_search”参数设置为“true”,一切都很好。

然而,当完成搜索并且数据不再相关时,我想重新加载网格以显示那里的先前数据(初始页面加载上显示的数据)。我做了一个函数来调用“trigger(”reloadGrid“)”方法,但是只发送相同的数据,而“_search”仍设置为“true”。

有没有办法清除搜索请求数据,只是重新加载页面加载中显示的初始数据,或者至少将“_search”值设置回“false”,以便我可以检查它?目前显示原始数据的唯一方法是重新加载页面。

2 个答案:

答案 0 :(得分:15)

如果使用jqGrid搜索,将设置以下两项内容

    jqGrid的
  1. search参数将设置为true
  2. 将修改
  3. postData jqGrid的参数。 postData参数的值是具有某些属性的对象。如果是single searching,则会设置属性searchFieldsearchStringsearchOper。如果是advanced searching,则只会设置filters参数的属性postData。 (属性_search也将设置,但是来自jqGrid的另一个组件,因此重置搜索并不重要。)
  4. 因此,要重置搜索,您可以为“重置搜索”按钮定义以下事件处理程序:

    $("#resetSearch").click(function() {
        var grid = $("#list");
        grid.jqGrid('setGridParam',{search:false});
    
        var postData = grid.jqGrid('getGridParam','postData');
        $.extend(postData,{filters:""});
        // for singe search you should replace the line with
        // $.extend(postData,{searchField:"",searchString:"",searchOper:""});
    
        grid.trigger("reloadGrid",[{page:1}]);
    });
    

    您可以在the following demo中看到所有这些内容。在演示中,您应首先单击导航栏的“搜索”按钮并设置搜索过滤器。然后,您可以单击“重置搜索”按钮并重置它。

答案 1 :(得分:2)

清理过滤器窗口(文本和选择)有以下添加(整个功能):

function filtReset() {

    $("#list").jqGrid('setGridParam',{search:false});

    var postData = $("#list").jqGrid('getGridParam','postData');

    $.extend(postData, { filters: "" });

    for (k in postData) {
        if (k == "_search")
            postData._search = false;
        else if ($.inArray(k, ["nd", "sidx", "rows", "sord", "page", "filters"]) < 0) {
            try {
                delete postData[k];
            } catch (e) { }

            $("#gs_" + $.jgrid.jqID(k), $("#list").get(0).grid.hDiv).val("");

        }
    }
    $("#list").trigger("reloadGrid", [{ page: 1}]);
    // for singe search you should replace the line with
    // $.extend(postData,{searchField:"",searchString:"",searchOper:""});
}