java - 如何在运行时从 jasper 中删除标题标签?

标签 java jasper-reports

我的标题标签有 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/

相关文章:

java - 使用 AssertJ 1.x 软断言断言该方法不会抛出异常

java - 需要在 HashMap 中查找对象类型值的键

java - 如何创建两个轴上都有日期的折线图?

java - Jasper Reports - 在 docx、xlsx、odt 中设置文档属性(作者、标题..)

java - 如何将 Google Visual API 图表嵌入到 JasperReports 中?

Java调用JasperReports打印问题

java - 写入文件异常?

java - JQuery 元素选择器不适用于 GET 生成的 HTML

java - 如何在具有多种所有者类型的实体上设计映射

jasper-reports - 报告中的项目符号和编号