У меня есть следующее требование.
- Отображение данных в таблице
- Нажатие на флажок отфильтровывает отображаемые в данный момент строки по некоторому условию
- Повторное нажатие на флажоквернуть внешний вид данных в его предыдущее состояние
Для достижения этого в моем ViewObject есть метод rowQualizes, который представляет собой простой объект представления на основе SQL для применения моей пользовательской логики фильтра.
Когда пользовательнажимает на флажок Я обновляю данные объекта просмотра, чтобы применить фильтр
viewObject.setDoFiltering(true);
viewObject.setQueryMode(ViewObject.QUERY_MODE_SCAN_VIEW_ROWS);
viewObject.executeQuery();
Он работает отлично, обновления набора данных не взаимодействуют с базой данных, и моя логика фильтра также применима.
Но когда мне нужноотменить фильтр не получится, потому что итератор больше не содержит предыдущих строк, и я могу загружать их только из базы данных, но это означает, что я могу потерять уже внесенные изменения для просмотра строк объекта.
Итак,когда я сделаю
viewObject.setDoFiltering(false);
viewObject.setQueryMode(ViewObject.QUERY_MODE_SCAN_VIEW_ROWS);
viewObject.executeQuery();
, он вернет мне те строки, которые отображались в прошлый раз.Если я сделаю
viewObject.setDoFiltering(true);
viewObject.setQueryMode(ViewObject.QUERY_MODE_SCAN_DATABASE_TABLES);
viewObject.executeQuery();
, он вернет мне все строки, но я потеряю свои изменения, уже внесенные для просмотра строк объекта.
Мой вопрос: как этого избежать?Может быть, есть другой способ сделать это?Возможно, можно что-то сделать с RichTable, чтобы рассказать, как фильтровать строки в памяти.
Любые советы горячо приветствуются!