我是JasperReports,我需要幫助。獲取printWhenExpression中的列標題文本
我們有一個動態獲取列標題和數據的場景。這就像一個常見的組件,它將生成報告,而不管列的數量和列標題以及數據(它們是動態的)。數據(列和數據)與JasperReports的API動態設置的報告中的Java一邊,我們只是在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>
該模板將在爪哇側被獲取並用於在模板DYNAMIC_DATA_FIELD值將與列標題文本,並根據在查詢的結果的數據的索引被替換。
現在我需要根據UI中單選按鈕的選擇來隱藏和顯示幾列。爲此,我打算使用printWhenExpression
但不知道如何獲取列標題文本。我看到類似$P{JASPER_REPORT}.getColumnHeader()
但不知道如何使用它。因此,這裏是我想要使用的條件(以下只是一個模板,我不知道正確的語法)...
if (radioSelection == something) {
if (columnHeaderText.endsWith('something') {
return true;
} else {
return false;
}
}
請注意,我將無法使用此條件在Java代碼作爲一個共同的組件,所有的報告使用它。由於每個報告在我們的場景中都有一個jrxml文件,並且這僅出現在特定報告中,因此我試圖將條件放在jrxml文件中。