FiltersFeature несколько фильтров для одного столбца, используя логику «ИЛИ» через флажки / кнопки за пределами сетки - PullRequest
1 голос
/ 12 сентября 2011

Я успешно настроил панель сетки с помощью плагина FiltersFeature.js. Я могу видеть параметры фильтра в пункте меню заголовка моего столбца. Я использую строки, списки и типы диапазонов дат и фильтрую только локально, а не удаленно.

Поведение работает как ожидалось. Например, у меня есть столбец «Статус» с настроенным фильтром (через конфигурацию, а не столбец):

filters: [{
  type: 'list',
  dataIndex: 'status',
  options: ['New', 'Waiting', 'Reopened','Working']
}]

, который правильно отображает список флажков для каждого элемента свойства параметров. Когда я выбираю «Новое» И «Работающий» из списка, сетка фильтруется, чтобы показать записи, соответствующие статусу «Новый» ИЛИ «Работающий».

Теперь, когда я программно добавляю фильтры, используя что-то вроде:

tasksGrid.filters.addFilters([{type: 'string', dataIndex: 'status', value: 'New'}]);
tasksGrid.store.load();

Работает, чтобы отфильтровать все записи в сетке до соответствующего статуса «Новый».

Проблема в том, что я не могу понять, как добавить несколько параметров в метод addFilters, чтобы получить такое же встроенное поведение поиска «ИЛИ», а не поиска «И».

При использовании выбора в меню заголовка и применении нескольких фильтров к одному столбцу, я могу видеть filterData с помощью метода getFilterData ():

[Object
  data: Object
  type: "list"
  value: Array[2]
    0: "New"
    1: "Waiting"
    length: 2
    __proto__: Array[0]
  __proto__: Object
  field: "status"
  __proto__: Object

Где значение установлено как массив из 2 значений. Однако, когда я пытаюсь сделать что-то вроде:

tasksGrid.filters.addFilters([{type: 'string', dataIndex: 'status', value: ['New','Waiting']}]);

Я получаю следующий результат для filterData:

[Object
  data: Object
  type: "string"
  value: "New,Waiting"
  __proto__: Object
  field: "status"
  __proto__: Object

Я решил, что это объединяет значения, потому что я использовал тип строки, поэтому я попробовал тип 'list', который определен в конфигурации фильтра, и я получаю следующую ошибку:

Uncaught TypeError: Невозможно вызвать метод 'on' из неопределенного ... ListMenu.js: 83

Любая помощь будет принята с благодарностью!

Спасибо

Сет

1 Ответ

0 голосов
/ 05 октября 2011

Я немного запутался в том, что ты пытаешься сделать.Если вы просто хотите установить значение фильтров, вы можете использовать это, я полагаю:

tasksGrid.filters.getFilter('status').setValue(["New", "Waiting"]);

Если вы пытаетесь добавить фактический фильтр после того, как сетка была создана, я посмотрел на документ дляux.ListFilter и ux.ListMenu, и не похоже, что вы можете создать его с предварительно выбранными определенными фильтрами.Мне придется еще немного покопаться в коде, чтобы создать фильтр списка.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...