0

我的应用程序有一个 af:table,它有一个名为 serverName 的伪列以及其他列。(通过伪列,我的意思是 - 它只是一个 UI 列,它没有相应的 DB 列)。

对于排序,我们重写了 SortListener 的 processSort(sortColumn, sortOrder) 方法。

它的工作原理如下: 1) 接收 sortColumn 并查询 DB 2) 使用 orderBy 子句 3) 获取结果,然后显示在 UI 上

现在就我而言,由于我的列 (serverName) 没有对应的 DB 列,我想超越此方法并使用 ADF 的默认字母排序。我怎么做?

如果 sortColum 与 serverName 匹配,我尝试从该方法返回,但最终不会对任何内容进行排序。

4

1 回答 1

0

使用setSortBy()方法。

阅读Fusion 开发人员指南中的这一部分

39.5.2 对内存中的视图对象行排序

要在运行时对视图对象中的行进行排序,请使用该setSortBy()方法。您传递了一个看起来像SQL ORDER BY子句的排序表达式。但是,不是引用表的列名,而是使用视图对象的属性名。例如,对于包含名为 Customer 和 DaysOpen 的属性的视图对象,您可以先按 Customer 降序对视图对象进行排序,然后通过调用以下方法按 DaysOpen 对视图对象进行排序:

setSortBy("Customer desc, DaysOpen"); 或者,您可以在排序子句中使用从零开始的属性索引位置,如下所示:

setSortBy("3 desc, 2"); 调用该方法后setSortBy(),下次调用该方法时将对行进行排序executeQuery()

于 2011-02-04T14:54:49.397 回答