Java 如何在特定方案中对ireport交叉表中的列进行排序
下图显示了我在ireport中的交叉表: 我想按照特定的顺序对我的列进行排序,因为我知道在交叉表数据中,我放置了一个具有以下属性的对象列表Java 如何在特定方案中对ireport交叉表中的列进行排序,java,sorting,jasper-reports,crosstab,Java,Sorting,Jasper Reports,Crosstab,下图显示了我在ireport中的交叉表: 我想按照特定的顺序对我的列进行排序,因为我知道在交叉表数据中,我放置了一个具有以下属性的对象列表list: public class ChampEtatAteliers { private String numero; private String denominationFr; private String etatEntreeSortie; public ChampEtatAteliers(String nume
list
:
public class ChampEtatAteliers {
private String numero;
private String denominationFr;
private String etatEntreeSortie;
public ChampEtatAteliers(String numero, String denominationFr, String etatEntreeSortie) {
this.numero = numero;
this.denominationFr = denominationFr;
this.etatEntreeSortie = etatEntreeSortie;
}
}
列中显示etatEntreeSortie
,行中显示面额fr
,交叉表中的计数使用numero
String rapportLien = "/SituationEquipement.jasper";
Map parametres = new HashMap();
JRBeanCollectionDataSource data = new JRBeanCollectionDataSource(atelierses);
在java中,我将这些对象放在listAteliers
list
中,因此是否有方法对列表或交叉表ireport中的列进行排序,ireport上的xml代码如下:
<columnGroup name="nbreVehicule" height="66">
<bucket order="Descending" class="java.lang.String">
<bucketExpression><![CDATA[$F{nbreVehicule}]]></bucketExpression>
<orderByExpression><![CDATA[$V{MyOrderByField_measure}]]></orderByExpression>
</bucket>
<crosstabColumnHeader>
<cellContents backcolor="#F0F8FF" mode="Opaque">
<textField>
<reportElement style="Crosstab Data Text" x="0" y="0" width="85" height="66" uuid="2109b261-1b20-493a-b664-ce59731c4a20"/>
<box topPadding="1" leftPadding="1" bottomPadding="1" rightPadding="1"/>
<textElement>
<font isBold="true"/>
</textElement>
<textFieldExpression><![CDATA[$V{nbreVehicule}]]></textFieldExpression>
</textField>
</cellContents>
</crosstabColumnHeader>
<crosstabTotalColumnHeader>
<cellContents/>
</crosstabTotalColumnHeader>
</columnGroup>
<measure name="MyOrderByField_measure" class="java.lang.Integer" calculation="Nothing" >
<measureExpression><![CDATA[$F{myOrderByField}]]></measureExpression>
</measure>
在jasper报告中,通过设置
存储桶上的顺序
属性,可以对交叉表列组
进行升序或降序排序
示例
.....
如果需要用户定义的订单,则应使用orderByExpression
为您想要订购的产品定义一个衡量标准
使用orderByExpression
.....
在您的示例中,这可以通过在champetataliers
类示例private int myOrderByField中引入一个新字段来实现代码>然后根据需要通过代码进行设置
另一个解决方案是将自己的对象(类)作为MyField
返回并实现,以生成所需的顺序
编辑:解决方法,OP无法使orderByExpression
正常工作
由于myOrderByField
对于nbreVehicule
是唯一的(与1相关),因此他可以在bucketExpression中使用myOrderByField
....
.....
因此,bucketExpression
无需与jasper报告中的crosstabColumnHeader
中显示的文本相同。通过在bucket
上设置顺序
属性,可以对交叉表列组
进行排序
示例
.....
如果需要用户定义的订单,则应使用orderByExpression
为您想要订购的产品定义一个衡量标准
使用orderByExpression
.....
在您的示例中,这可以通过在champetataliers
类示例private int myOrderByField中引入一个新字段来实现代码>然后根据需要通过代码进行设置
另一个解决方案是将自己的对象(类)作为MyField
返回并实现,以生成所需的顺序
编辑:解决方法,OP无法使orderByExpression
正常工作
由于myOrderByField
对于nbreVehicule
是唯一的(与1相关),因此他可以在bucketExpression中使用myOrderByField
....
.....
因此,bucketExpression
不需要与crosstabColumnHeader中显示的文本相同