【问题标题】:Get column header text in printWhenExpression在 printWhenExpression 中获取列标题文本
【发布时间】:2013-08-28 17:51:18
【问题描述】:

我是 JasperReports 的新手,我需要帮助。

我们有一个动态获取列标题和数据的场景。这就像一个通用组件,它将生成报告,而不管列数以及列标题和数据(它们是动态的)。数据(列和数据)通过 JasperReports APIJava 端动态设置为报告,我们在 中只有一个模板,如下所示jrxml 文件。

<jr:column width="92">
    <jr:columnHeader style="table 2_CH" height="25" rowSpan="1">
        <staticText>
            <reportElement x="0" y="0" width="92" height="25" backcolor="#99CCFF"/>
            <textElement textAlignment="Center" verticalAlignment="Middle">
                <font fontName="Arial" size="9" isBold="true"/>
            </textElement>
            <text><![CDATA[DYNAMIC_DATA_FIELD]]></text>
        </staticText>
    </jr:columnHeader>
    <jr:detailCell style="table 2_CH" height="25" rowSpan="1">
        <textField isBlankWhenNull="true">
            <reportElement x="0" y="0" width="92" height="25"/>
            <textElement textAlignment="Right" verticalAlignment="Middle">
                <font fontName="Arial" size="8"/>
            </textElement>
            <textFieldExpression><![CDATA[$F{DYNAMIC_DATA_FIELD}]]></textFieldExpression>
        </textField>
    </jr:detailCell>
</jr:column>

此模板将在 Java 端获取,模板中 DYNAMIC_DATA_FIELD 的值将替换为列标题文本和数据索引,具体取决于结果的一个查询。

现在我需要根据 UI 中单选按钮的选择隐藏和显示几列。为此,我计划使用 printWhenExpression 但不确定如何获取列标题文本。我看到类似 $P{JASPER_REPORT}.getColumnHeader() 的东西,但不知道如何使用它。所以这是我尝试使用的条件(下面只是一个模板,我不确定正确的语法)...

if (radioSelection == something) {
    if (columnHeaderText.endsWith('something') {
        return true;
    } else {
        return false;
    }
}

请注意,我将无法在 Java 代码中将此条件用作其通用组件,并且所有报告都使用此条件。由于在我们的场景中每个报告都有一个 jrxml 文件,而且这只发生在特定报告中,我试图将条件放在 jrxml 文件中。

【问题讨论】:

    标签: java jasper-reports


    【解决方案1】:

    你可以为每一列(显示或不显示)制作布尔 [] 数组吗? 在这种情况下,您可以将它的数组作为参数传递给 report.jrxml(例如 $P{displayCols})。

    在表中设置“列打印时”表达式为 $P{displayCols[number_of_column]} 其中列数是具体数字(1 或 2 或 3 ...)

    但是在这种情况下你必须更改“生成”jrxml?在这种情况下不需要列标题文本

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-03-28
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-01-29
      相关资源
      最近更新 更多