Oracle ADF:如何过滤掉RichTable中的行?

时间:2011-11-23 13:07:23

标签: oracle-adf

我有以下要求。

  1. 在表格中显示数据
  2. 点击复选框按某些条件过滤掉当前显示的行
  3. 再次单击复选框可将数据外观返回到其之前的状态
  4. 为了实现这个目的,我在我的ViewObject中使用了rowQualifies,这是一个简单的基于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做一些事情来告诉它如何过滤内存中的行。

    任何建议都得到热烈的批评!

1 个答案:

答案 0 :(得分:0)

我相信这可以使用ViewCriteria完成,过滤手段以应用ViewCriteria,然后禁用它以查看所有数据