我正在尝试使用JasperReports
生成交叉表报告。该列包含时间段,该行包含不同的条件组。现在我需要根据级别更改行标题的样式。例如,在下面显示的网格中,Web和电子邮件需要以粗体显示,而其他行标题则按原样。
现在,我在bean中有一个字段让我决定是否应该使文本变粗,所以我尝试在条件样式中使用它,如下所示
<style name="rowStyle" hAlign="Center">
<conditionalStyle>
<conditionExpression><![CDATA[$V{level}.intValue() != 0]]></conditionExpression>
<style isBold="true" hAlign="Left"/>
</conditionalStyle>
<conditionalStyle>
<conditionExpression><![CDATA[$V{level}.intValue() == 0]]></conditionExpression>
<style isBold="false" hAlign="Right"/>
</conditionalStyle>
</style>
我有一个字段和一个与此对应的度量表达式
<field name="level" class="java.lang.Integer"/>
<measure name="level" class="java.lang.Integer">
<measureExpression><![CDATA[$F{level}]]></measureExpression>
</measure>
但是,在crosstabRowHeader
中使用时,此样式不会执行任何操作,它仅在crosstabCell
内生效。
所以我的问题是
答案 0 :(得分:0)
毕竟管理好了解决这个问题。 所以问题是能够从crosstabrowheader(或任何其他交叉表标题)中的bean访问属性。 要做到这一点,首先要创建一个与bean对应的字段 -
<field name="voBean" class="com.jasper.reports.voBean">
<fieldDescription>_THIS</fieldDescription>
</field>
然后在标题中,将此bean指定为存储桶类。
<rowGroup name="voBean" width="200">
<bucket class="com.jasper.reports.voBean">
<bucketExpression><![CDATA[$F{voBean}]]></bucketExpression>
</bucket>
您现在可以开始访问bean上的任何属性,如下所示
<textFieldExpression><![CDATA[$V{voBean}.getRowName()]]></textFieldExpression>
希望这可以帮助其他人解决同样的问题。