我想根据网址参数在多个iggrid列上应用过滤器。以下代码仅显示最后一个过滤器。它忽略或覆盖先前的过滤条件设置。
//value is multiple columns filter details separated by ;
var columns = value.split(";")
for (i = 0; i < columns.length; i++) {
state_grid.igGridFiltering("filter", [{ fieldName: columns[i][0], expr: columns[i][2], cond: columns[i][1] }]);
}
我通过这个iggrid forum,发现可以应用多个过滤器,如:
$("#grid1").igGridFiltering("filter", [
{fieldName: "MakeFlag", expr: true, cond: "true" , logic: "AND"},
{fieldName: "ProductID", expr: 3, cond: "equals", logic: "OR"}
]);
如果我对过滤条件进行硬编码,它可以正常工作,过滤文本显示在所有列上。我的问题是如何在jQuery中动态生成它并将其传递给igGridFiltering事件。必须根据URL查询字符串加载这些条件。可以这样做:
var expression='';
for (i = 0; i < columns.length; i++) {
var vl = columns[i].split('_');
expression += '{ fieldName:'+ vl[0]+', expr:'+ vl[2]+', cond:'+ vl[1]+' },';
}
state_grid.igGridFiltering("filter", [expression]);
请帮忙。
答案 0 :(得分:1)
最后,我通过一些尝试找到答案。基本上我创建了一个多维数组并将其传递给网格过滤事件。代码如下:
var columns = value.split(";"), i, expression = [];
for (i = 0; i < columns.length; i++) {
var data = {},
vl = columns[i].split('_');
data.fieldName = vl[0];
data.expr = vl[2];
data.cond = vl[1];
expression.push(data);
}
state_grid.igGridFiltering("filter", expression);
此代码似乎没有任何问题。如果有人找到更好的解决方案,请告诉我。
感谢。