jqxgrid не может выбрать динамические параметры в элементах фильтра, используя конфигурацию - PullRequest
0 голосов
/ 07 декабря 2018

Я использую 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.

...