JqGrid中的自定义搜索表单


Custom Search Form in JqGrid

我正在尝试使用PHP MVC结构的JqGrid。我不想使用JqGrid的搜索功能,而是想要通用关键字搜索。我有json数组中的数据。请告诉我如何使用json数据集进行搜索。

此搜索应在多个列上执行。

这是我的搜索表单

<form name="frmsearch" id="frmsearch">
     <input type="text" id="txtsearch" name="txtsearch"/>
     <a href="javascript:void(0);" onClick="doSearch();">Search</a>
</form>

这是我的网格

$(document).ready(function () {
    jQuery("#agentlist").jqGrid({
        url: "manageagents/getagents/",
        datatype: "json",                
        mtype:"POST",
        jsonReader: {
            root: "rows",
            page: "currpage",
            total: "totalpages",
            records: "totalrecords",
            id: "0",
            cell:"",
            repeatitems: false
        },
        colNames: ['Id','Agent Name', 'Email Address', 'Phone No.1', 'Phone No.2','City', 'State', 'Country'],
        colModel: [ 
                ... ... ...
                  ],
        rowNum:<?php echo $this->config->item('per_page');?>, 
        rowList:<?php echo $this->config->item('nav_page');?>,
        pager: '#plist',
        autowidth: true,
        height: "100%",
        loadonce: true,
        viewrecords: true,
        altRows:true,                
        caption: "",
    }).navGrid('#plist', { edit: false, add: false, del: false, search: true, refresh: false }); ;
});  

执行所需操作的最简单方法是将当前值从搜索输入字段#txtsearch发送到URL "manageagents/getagents/"。添加postData参数就足够了,其属性类似于将发送到服务器的参数名称(如myFilter):

postData: {
    myFilter: function () { return $("#txtsearch").val(); }
}

你可以阅读答案中的更多细节。

doSearch函数内部,您可以直接调用

jQuery("#agentlist").trigger("reloadGrid", [{page: 1}]);