如何在Jasper Report中根据条件动态设置TextField的字体属性
如何在JasperReports中动态设置字体的删除线属性?
要实现根据$F{product_unformatted_discount_amount}的值动态控制<font>标签的isStrikeThrough属性,你不需要额外复杂逻辑,直接把属性值换成条件表达式即可——JasperReports支持在字体属性中使用动态表达式,具体修改如下:
修改后的完整代码片段:
<textField> <reportElement style="DetailsPrice" x="370" y="5" width="56" height="15" uuid="2f0dc291-6a8b-48d3-b7d1-fe931b88e859"> <property name="com.jaspersoft.studio.unit.y" value="px"/> <property name="com.jaspersoft.studio.unit.x" value="mm"/> <property name="com.jaspersoft.studio.unit.height" value="mm"/> <printWhenExpression> <![CDATA[$F{product_unformatted_discount_amount} != null && $F{product_unformatted_discount_amount} != 0]]> </printWhenExpression> </reportElement> <textElement textAlignment="Left" verticalAlignment="Middle"> <font isBold="true" isStrikeThrough="$F{product_unformatted_discount_amount} != null && $F{product_unformatted_discount_amount} != 0"/> </textElement> <textFieldExpression><![CDATA["+" + $F{product_price_formatted_amount}]]></textFieldExpression> </textField>
关键改动说明
- 将原来固定的
isStrikeThrough="true"替换为动态表达式:isStrikeThrough="$F{product_unformatted_discount_amount} != null && $F{product_unformatted_discount_amount} != 0" - 表达式逻辑和你
printWhenExpression里的逻辑一致:当折扣金额不为空且不等于0时启用删除线,其他情况则不显示删除线
这样就能直接在<font>标签内实现条件判断,动态控制字体的删除线属性了。
内容的提问来源于stack exchange,提问作者Stefano
相关产品推荐
相关产品推荐

