2011-11-23 87 views
1

我有以下要求。在表Oracle ADF:如何過濾RichTable中的行?

  1. 顯示數據
  2. 點擊複選框被一些條件
  3. 點擊複選框篩選出當前顯示的行再次返回數據的外觀到之前的狀態

要做到這一點我'ov ovidedided method rowQualifies在我的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!

回答

0

我相信這可以使用ViewCriteria完成,以過濾意味着應用ViewCriteria,然後禁用它來查看所有數據