如何在Jasper报告中动态显示列?

Ali*_*Ali 5 java jasper-reports conditional-statements

我正在生成一个Jasper报告,它有5个固定列.客户端已请求能够在运行时选择列数.

例如,如果他从显示的JTable中检查2列,则Jasper报告中应该有2列,如果他检查4,那么jasper报告中应该有4列.为了解决这个问题,我想在jasper报告中添加条件.如果客户端选择列A,则BI会将其设置为报表中的参数,并使用该列确定是否显示列.

为了做到这些,我需要使用Jasper XML中的条件.我应该在哪里设置报告中的条件.

Raa*_*aam 4

您可以尝试以下方法

  1. 创建一个HashMap并在其中设置所需的属性

    Map params = new HashMap();
    params.put("DISPLAY_COLUMN_ONE", "Y")
    
    Run Code Online (Sandbox Code Playgroud)
  2. params在方法中将此映射传递给 Jasper

    JasperFillManager.fillReport

  3. 在 JRXML 中,创建与上面哈希图中设置的每个属性相对应的参数:

    <parameter name="DISPLAY_COLUMN_ONE" class="java.lang.String"/>

  4. 根据参数值显示列

    <printWhenExpression><![CDATA[$P{DISPLAY_COLUMN_ONE}.equals("Y")]]></printWhenExpression>