【问题标题】:Dynamically show or hide table in jasper report在jasper报告中动态显示或隐藏表格
【发布时间】:2016-03-29 15:28:33
【问题描述】:

我在 Jasper 报告中显示或隐藏表格时遇到问题。

当没有数据可用时,它会显示一条水平线。

当查询没有检索到数据时,我想从报表中隐藏静态文本字段和表格。

谁能帮帮我?

这里我附上了我的输出。

【问题讨论】:

    标签: jasper-reports


    【解决方案1】:

    您可以尝试为静态文本以及表格的每一列设置 Print When 表达式。

    这是它的外观示例:

    // determine somewhere whether the received table data is empty or not.
    // save the result as a boolean and add it to report parameters
    boolean ifTableEmpty = false;  // for example
    parameters.put("ifTableEmpty", ifTableEmpty);
    
    // create a Print When expression
    JRDesignExpression whenToPrintTheTable = new JRDesignExpression();
    whenToPrintTheTable.setText("$P{ifTableEmpty}");    
    
    // add the expression to your static text and similarly for each column
    staticText.setPrintWhenExpression(whenToPrintTheTable);
    

    【讨论】:

    • 对不起,我是 jasper 报告的初学者,你能告诉我如何迭代表格数据吗?给我一些示例代码。
    • 嗯。如果您要问这个问题,那么我猜数据是在您创建 Jasper Design 对象之后读取的。。那么,遍历数据的每一列将是不必要的复杂化。 (你知道,在没有看到任何代码的情况下找到正确的建议有点困难。)现在我认为在创建表之前检查是否获得任何数据就足够了,如果数据为空,则不创建它。我无法提供任何示例代码,因为我不知道您是如何获取数据的。
    • 在我的碧玉报告中,我设计了表格对象并用查询填充表格。就我而言,是否可以隐藏表格。
    • 如果能得到查询数据,再设计表对象,再填表,那就可以了。
    • 谢谢,它对我有用。但现在我面临另一个问题。在我的报告中,我有几个表格,当一些表格隐藏(因为没有数据)时,其他一些表格也打印在另一页而不是第一页上。我将位置类型指定为每个表的浮动。你能帮帮我吗?
    【解决方案2】:

    您可以创建子报表,内容将是您要显示或隐藏的代码。 之后在任何检索字段上使用 Print When 表达式。

    【讨论】:

      【解决方案3】:

      您可以使用无数据部分。这是为了在查询没有返回数据的情况下处理布局。您可以找到 No Data 作为最后但一个部分 - 在背景上方和摘要下方

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2012-06-07
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2015-12-27
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多