У меня сейчас есть эта конкретная проблема - у меня есть сетка, в которой я пытаюсь фильтровать данные с помощью нескольких фильтров. Для этого я использую текстовые поля, которые служат полями ввода для моего критерия фильтрации.
Моя сетка состоит из трех столбцов (имя, фамилия, адрес), и я хотел бы иметь возможность связывать операции фильтрации одну за другой. Все значения взяты из базы данных MySQL.
По сути, процесс фильтрации должен выглядеть следующим образом:
FirstName ^ LastName ^ Address
Например, сетка из трех столбцов:
И в фильтре для столбца First Name я ввожу переменные Aa
, в результате чего таблица будет выглядеть так:
Однако, если я решил ввести D
в фильтр фамилии, он вернет такие результаты (игнорирует изменения, внесенные первым фильтром):
Вместо ожидаемого результата, который будет выглядеть так:
Я использую фильтрацию по сетке следующим образом:
firstNameFilter.addValueChangeListener( e->
{
Notification.show(e.getValue());
ldp.setFilter(desc ->
{
return StringUtils.containsIgnoreCase(desc.getFName(), firstNameFilter.getValue());
});
});
firstNameFilter.setValueChangeMode(ValueChangeMode.EAGER);
Как лучше всего фильтровать несколько столбцов с учетом предыдущих действий фильтра?