Oracle ADF: как отфильтровать строки в RichTable?

У меня есть следующее требование.

  1. Отображение данных в таблице
  2. Нажатие на флажок отфильтровывает отображаемые в данный момент строки по какому-либо условию.
  3. Повторное нажатие на флажок возвращает внешний вид данных в предыдущее состояние.

Для этого я пересмотрел метод rowQualify в моем ViewObject, который представляет собой простой объект представления на основе 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, чтобы сказать ему, как фильтровать строки в памяти.

Любые советы тепло appricated!


person endryha    schedule 23.11.2011    source источник


Ответы (1)


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

person Amr Gawish    schedule 26.02.2012