我有以下要求。
为了实现这个目的,我在我的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做一些事情来告诉它如何过滤内存中的行。
任何建议都得到热烈的批评!
答案 0 :(得分:0)
我相信这可以使用ViewCriteria完成,过滤手段以应用ViewCriteria,然后禁用它以查看所有数据