Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/jpa/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/324.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Jasper reports 根据iReport中的参数对报表进行排序_Jasper Reports_Ireport - Fatal编程技术网

Jasper reports 根据iReport中的参数对报表进行排序

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

我有一个包含两个字段的简单报告:ID和NAME。 我想根据用户在运行时选择的参数,按ID或名称对细节进行排序

我试过这样做:

<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;