Jasper reports 根据iReport中的参数对报表进行排序
我有一个包含两个字段的简单报告:ID和NAME。 我想根据用户在运行时选择的参数,按ID或名称对细节进行排序 我试过这样做:Jasper reports 根据iReport中的参数对报表进行排序,jasper-reports,ireport,Jasper Reports,Ireport,我有一个包含两个字段的简单报告:ID和NAME。 我想根据用户在运行时选择的参数,按ID或名称对细节进行排序 我试过这样做: <sortField name="sort" type="Variable"/> <variable name="sort" class="java.lang.String"> <variableExpression> <![CDATA[$P{ord}.equals("name") ? $F{entity
<sortField name="sort" type="Variable"/>
<variable name="sort" class="java.lang.String">
<variableExpression>
<![CDATA[$P{ord}.equals("name") ? $F{entity}.getName() : $F{entity}.getId().toString()]]>
</variableExpression>
</variable>
编辑1:我将数据源作为参数传递,我不执行来自JasperReports的sql查询。
我想我可以将数据源alredy sorted传递给JasperReports,但是我想直接从报告中对数据进行排序
编辑2:我查看了前面的代码,效果很好。只需创建一个默认值为“ID”的参数“Sort\u order”,并在查询中添加order by子句
SELECT...
FROM..
ORDER BY $P!{Sort_order} DESC
您可以在SELECT中使用ORDERBY子句。然而,有时由于内部化或类似的原因,您需要按jasper对数据进行排序。解决此问题的一种方法是选择特殊列进行排序(POSTGRESQL):
然后设置按列排序
sort\u name
和sort\u id
我忘了提到我没有从JasperReports执行sql查询
SELECT
id, name,
(CASE WHEN $P!{Sort_order}='id' THEN id ELSE null END) sort_id,
(CASE WHEN $P!{Sort_order}='name' THEN name ELSE null END) sort_name
FROM
your_table;