Фильтровать jqgrid с несколькими условиями "и" и "или"
Я хочу отфильтровать jQGrid, используя критерии поиска ниже
Name="Mark" and Age=25 and (city="NY" or city="FL") and (company="xyz" or company="zyx")
ниже моя строка поиска
{
"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": [{
"groupOp": "OR",
"rules": [{
"field": "company",
"op": "eq",
"data": "xyz"
},
{
"field": "company",
"op": "eq",
"data": "zyx"
}
]
}]
}]
}
а также
postData: {
filters: above string
},
но этот поиск не работает. пожалуйста помоги
1 ответ
Похоже, у вас ошибка в последнем "groups"
часть. Правильный фильтр должен выглядеть так
{
"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": []
},
{
"groupOp": "OR",
"rules": [
{ "field": "company", "op": "eq", "data": "xyz" },
{ "field": "company", "op": "eq", "data": "zyx" }
],
"groups": []
}
]
}
Кроме того, я настоятельно рекомендую вам включить версию jqGrid, которую вы используете (можете использовать) и разветвление ( бесплатную jqGrid, коммерческую версию Guriddo jqGrid JS или старую версию jqGrid в версии <=4.7).
Если вы действительно используете "бесплатный jqGrid" (не старый jqGrid в версии <=4.7), то вы можете использовать "IN"
оператор с локальным набором данных. Значение должно быть разделенным запятыми списком значений и
{
"groupOp": "AND",
"rules": [
{ "field": "Name", "op": "eq", "data": "Mark" },
{ "field": "Age", "op": "eq", "data": "25" },
{ "field": "city", "op": "eq", "data": "NY,FL" },
{ "field": "company", "op": "eq", "data": "xyz,zyx" }
]
}
Кроме того, бесплатный jqGrid позволяет заменить запятую по умолчанию (которая может быть включена в некоторые названия компаний) на любой альтернативный символ, определенный параметром jqGrid. inFilterSeparator
,