我的标题标签有 3 个子项、一张图像和 2 个文本字段。无论如何,如果所有 3 个子项都为空,我想从报告中删除/隐藏完整的标题标签。有没有办法在运行时执行此操作而不更改我的 jrxml 文件。
最佳答案
您可以将 jrxml 加载到 JasperDesign
对象中并设置标题 null
示例
JasperDesign design = JRXmlLoader.load("jasper/dbTest2.jrxml");
design.setTitle(null);
JasperReport report = JasperCompileManager.compileReport(design);
请注意,要使用此功能,您需要在填写报告之前了解是否要删除 strip 。
填写报告后,您将拥有一个 JasperPrint
,这也可以进行操作,但您需要逐页进行操作(不再有标题带,而是页面表示)。删除对象意味着您需要移动所有其他对象...
正确的方法通常是在title
区域使用printWhenExpression
<title>
<band height="201">
<printWhenExpression><![CDATA[$F{image1}!=null && $F{text1}!=null && $F{text2}!=null]]></printWhenExpression>
... your images and text fields
</band>
</title>
因此请考虑修改您的 jrxml 或在运行时添加此表达式。
JasperDesign design = JRXmlLoader.load("jasper/dbTest2.jrxml");
JRDesignBand title = (JRDesignBand) design.getTitle();
title.setPrintWhenExpression(new JRDesignExpression("$F{image1}!=null && $F{text1}!=null && $F{text2}!=null"));
关于java - 如何在运行时从 jasper 中删除标题标签?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34630996/