jqGrid:使用json数据进行搜索

时间:2014-01-28 05:29:44

标签: spring

我已成功通过分页从spring框架中的服务器加载数据,但我的搜索/查找记录和过滤器栏无法正常工作。

但如果我使 loadonce = true ,那么过滤器或搜索工作正常。

我的jsp代码是:

var allColumnNames=["Sr. No","contactName", "city", "country"];

 var grid = jQuery('#list');

        grid.jqGrid({
            url:'customerData.html',
            datatype: 'json',
            mtype: 'GET',               
            loadonce: false,

            colNames: allColumnNames,
            colModel: [

                { name:'id', index:'id', jsonmap:"id", width:20,index:'id', search:true, stype:'int' ,hidden:true},
                { name: "contactName" ,index:'contactName', width:160, search:true, stype:'text' },
                { name: "city",index:'city', width:160, search:true, stype:'text'  },
                { name: "country" ,index:'country', width:160, search:true, stype:'text' }
            ],
             caption: 'Customer Details',
                height: 'auto',
                gridview: true,
                rownumbers: true,
                viewrecords: true,
                pager: '#pager',
                rowNum: 10,
                rowList: [5, 10, 20, 50],                  
                rownumbers: true
            });

           $("#search").click(function() {
            var searchFiler = $("#filter").val(), f;

            if (searchFiler.length === 0) {
                grid[0].p.search = false;
                $.extend(grid[0].p.postData,{filters:""});
            }
            f = {groupOp:"OR",rules:[]};
            f.rules.push({field:"contactName",op:"cn",data:searchFiler});
            f.rules.push({field:"city",op:"cn",data:searchFiler});
            grid[0].p.search = true;
            $.extend(grid[0].p.postData,{filters:JSON.stringify(f)});
            grid.trigger("reloadGrid",[{page:1,current:true}]);
        }); 

我是jqGrid的新手,请帮助我解决上述问题。

提前致谢!

1 个答案:

答案 0 :(得分:0)

当你输入 loadonce = true 时,jqGrid只会生成一个获取所有数据的请求,然后如果你过滤,排序,搜索......则由前端的jqGrid控制。

但是如果 loadonce = false ,只加载此时所需的数据,每次jqGrid需要新数据时,它会向服务器发送另一个带有不同参数的请求。

enter image description here

所以我猜你的服务器文件" customerData.html",它还没准备好回答所有不同的问题。

这里http://trirand.com有很多jqGrid示例,其中大部分都有服务器端代码。