Я использую jqxgrid для отображения данных.Мое требование состоит в том, чтобы загрузить фильтрующий элемент из конфигурации, поэтому я должен хранить данные фильтра в БД, а когда я загружаю данные в сетку.Он не работает должным образом, потому что динамический объект javascript перезаписывает фильтр.
У меня есть фильтр json, подобный.
var newJson = '[{"firstname":{"value":"lan","condition":"EQUAL","operator":1,"type":"stringfilter","id":38}},{"firstname":{"value":"Lars","condition":"EQUAL","operator":1,"type":"stringfilter"}},{"productname":{"value":"latte","condition":"CONTAINS","operator":1,"type":"stringfilter"}}]';
Если мы хотим применить фильтр в jqxgrid, то он долженбыть похожим на
var addfilter = function () {
var filtergroup = new $.jqx.filter();
var filter_or_operator = 1;
var filtervalue = 'Elio';
var filtercondition = 'EQUAL';
var filter = filtergroup.createfilter('stringfilter', filtervalue, filtercondition);
filtergroup.addfilter(filter_or_operator, filter);
$("#jqxgrid").jqxGrid('addfilter', 'firstname', filtergroup);
$("#jqxgrid").jqxGrid('applyfilters');
}
, поэтому мое требование - динамически устанавливать addfilter.
var addNewfilter = function (data) {
data = JSON.parse(data)
let arr = []
for (var j = 0; j < data.length; j++) {
let obj = data[j];
for (var key in obj) {
if (obj.hasOwnProperty(key)) {
var filtergroup = new $.jqx.filter();
let filter_or_operator = obj[key].operator;
let filtervalue = obj[key].value;
let filtercondition = obj[key].condition;
console.log(filter_or_operator + ' ' + filtervalue + ' '+ filtercondition)
let filter = filtergroup.createfilter('stringfilter', filtervalue, filtercondition);
filtergroup.addfilter(filter_or_operator, filter);
$("#jqxgrid").jqxGrid('addfilter', key, filtergroup);
}
}
}
$("#jqxgrid").jqxGrid('applyfilters');
}
Вышеуказанный addNewFilter - это аргумент данных из конфигурации и чтение выше json.Как и в предыдущем ключе json, есть два объекта firstname, поэтому он должен быть выбран в столбце firstname, но из-за итерации цикла выбирается последний параметр.Так как я создаю динамический объект в JavaScript.
Я положил свой код в скрипте, пожалуйста, проверьте ссылка .В примере скрипты, когда вы нажимаете на применить фильтр, чтобы было выбрано только одно значение, но оно должно быть все из json.