Jasper reports 如何根据表列的内容隐藏表列?

Jasper reports 如何根据表列的内容隐藏表列?,jasper-reports,Jasper Reports,我有一份包含表格的报告。我想根据支持该表的查询的结果集隐藏该表的列。例如,以下是其中一列的XML: $F{Total1_header}!=无效的 $F{Total1_header} $F{Total1} 出于某种原因,我的报告在抱怨打印时的打印错误。它声称,$F{Total1_header}不存在。但是,它并不抱怨textFieldExpression中的$F{Total1_header}实例 我不明白为什么该字段可用于textFieldExpression,但不能用于printWhenEx

我有一份包含表格的报告。我想根据支持该表的查询的结果集隐藏该表的列。例如,以下是其中一列的XML:


$F{Total1_header}!=无效的
$F{Total1_header}
$F{Total1}
出于某种原因,我的报告在抱怨打印时的打印错误。它声称,
$F{Total1_header}
不存在。但是,它并不抱怨textFieldExpression中的
$F{Total1_header}
实例


我不明白为什么该字段可用于textFieldExpression,但不能用于printWhenExpression。

列具有“Column print when”属性,可通过表达式隐藏/显示列

另一种删除列的方法是在运行时修改jasper设计,然后像往常一样进行报表编译和处理。此方法可以将未使用的宽度分配给其余列

大致是这样的:

JasperDesign design = ...
JRDesignComponentElement tableElement = (JRDesignComponentElement) design.getTitle().getElementByKey(tableKey);
StandardTable tableComponent = (StandardTable) tableElement.getComponent();
col = tableComponent.getColumns().get(0);
tableComponent.removeColumn(col);
// Then compile the JasperDesign
JasperReport result=JasperCompileManager.compileReport(design);
给未来的读者

你应该使用这个

而不是

$F{Total1_header}=null

我试图使用列的PrintWheenPression隐藏列。然而,我使用的字段似乎对我不可用,我也不知道为什么。我真的不知道你在运行时修改jasper设计是什么意思