2012-11-06 123 views
3

我有一个jqGrid的一些记录,并希望根据多个条件过滤记录。在客户端通过多个条件过滤jqGrid

例如,如果有三列,姓名,年龄和城市,我希望筛选在下述条件下电网:

Name = "Mark" and Age = 25 and City = 'NY' 

下面的代码工作细

var grid = jQuery("#memberDetails"); 
var postdata = grid.jqGrid('getGridParam', 'postData'); 

var filterArray = new Array(); 
var filterConidtion; 

filterConidtion = new Object(); 
filterConidtion.field = "name"; 
filterConidtion.op = "eq"; 
filterConidtion.data = "Mark"; 
filterArray.push(filterConidtion); 

filterConidtion = new Object(); 
filterConidtion.field = "Age"; 
filterConidtion.op = "eq"; 
filterConidtion.data = "25"; 
filterArray.push(filterConidtion); 

filterConidtion = new Object(); 
filterConidtion.field = "City"; 
filterConidtion.op = "eq"; 
filterConidtion.data = "NY"; 
filterArray.push(filterConidtion); 

jQuery.extend(postdata, { 
     filters: { 
      "groupOp": "and", 
      "rules": filterArray 
     } 
    }); 

grid.jqGrid('setGridParam', { 
      search: true, 
      postData: postdata 
    }); 

grid.trigger("reloadGrid", [{ 
     page: 1 
    }]); 

但我不知道如何使以下过滤器工作:

Name = "Mark" and Age = 25 and (City = 'NY' OR City = 'FL') 

groupOp瓦特或者在AND或OR条件下,不知道如何在groupOp内嵌入子条件

谢谢。

回答

5

filters的格式在the documentation中描述。为了实施更复杂的搜索标准,可以使用filtersgroups财产。相应的代码可能大约如下:

var $grid = $("#memberDetails"); 

$.extend($grid.jqGrid("getGridParam", "postData"), { 
    filters: JSON.stringify({ 
     groupOp: "AND", 
     rules: [ 
      { field: "Name", op: "eq", data: "Mark" }, 
      { field: "Age", op: "eq", data: "25" } 
     ], 
     groups: [ 
      { 
       groupOp: "OR", 
       rules: [ 
        { field: "City", op: "eq", data: "NY" }, 
        { field: "City", op: "eq", data: "FL" } 
       ], 
       groups: [] 
      } 
     ] 
    }) 
}); 
$grid.jqGrid("setGridParam", {search: true}) 
    .trigger('reloadGrid', [{current: true, page: 1}]);