我的应用程序有一个af:table,它有一个名为serverName的psuedo列以及其他列。 (通过psuedo-column,我的意思是 - 它只是一个UI列,它没有相应的DB列。)
为了排序,我们重写了SortListener的processSort(sortColumn,sortOrder)方法。
它的工作方式如下: 1)接受sortColumn并查询数据库 2)使用orderBy子句 3)获取结果,然后在UI上显示
现在在我的情况下,由于我的列(serverName)没有相应的DB列,我想超越这个方法并使用ADF的默认字母排序。 我该怎么做?
如果sortColum与serverName匹配,我尝试从此方法返回,但最终没有对任何内容进行排序。
答案 0 :(得分:0)
使用setSortBy()
方法。
在“Fusion开发者指南”中阅读this section。
39.5.2在内存中对视图对象行进行排序
要在运行时对视图对象中的行进行排序,请使用setSortBy()
方法。您传递一个看起来像SQL ORDER BY
子句的排序表达式。但是,您可以使用视图对象的属性名称,而不是引用表的列名。例如,对于包含名为Customer和DaysOpen的属性的视图对象,您可以先按客户降序对视图对象进行排序,然后通过调用以下方式按DaysOpen排序:
setSortBy("Customer desc, DaysOpen");
或者,您可以在排序子句中使用从零开始的属性索引位置,如下所示:
setSortBy("3 desc, 2");
调用setSortBy()
方法后,下次调用executeQuery()
方法时将对行进行排序。