2014-01-20 36 views
1

我想在使用DynamicJasper生成报告时隐藏一列。
我不知道如何做到这一点。我试图得到一些功能,但我不明白,因为我是一个技术。在DynamicJasper中自动隐藏列

这是我的基本代码:

AbstractColumn myColumn = ColumnBuilder.getNew().setColumnProperty(ConstantsClass.REPORT_COLUMN_PROPERTY[0], String.class.getName()) 
     .setFixedWidth(true) 
     .setTitle(ConstantsClass.REPORT_COLUMN_COLUMN_HEAD[0]).setWidth(new Integer(100)) 
     .setHeaderStyle(myStyle) 
     .build(); 

FastReportBuilder drb = new FastReportBuilder(); 
drb.addColumn(myColumn); 
DynamicReport dr = drb.build(); 

return dr; 

假设如果此列excel表的B列,应当在产生报告自动隐藏。列A后只应显示C.取消隐藏时,应显示B.

+0

什么是问题?您可以使用方法'FastReportBuilder.addColumn'添加列 - 它取决于逻辑。 –

+0

示例是[这里](http://dynamicjasper.com/documentation-examples/getting-started/) –

+0

嗨亚历克斯,这里的问题是列必须建立和保持隐藏。只有当他们取消隐藏时,它才会显示出来。如果我要在代码中使用条件,我可以选择仅决定是否构建列。 – prabhath

回答

0

你可以试试这个。因为这是用java编写的,所以你可以试试这个。

if(ConditionForBColumn) { 
AbstractColumn myColumn = ColumnBuilder.getNew().setColumnProperty(ConstantsClass.REPORT_COLUMN_PROPERTY[0], ValueOfB String.class.getName()) 
    .setFixedWidth(true) 
    .setTitle(ConstantsClass.REPORT_COLUMN_COLUMN_HEAD[0]).setWidth(new Integer(100)) 
    .setHeaderStyle(myStyle) 
    .build(); 
} else { 
AbstractColumn myColumn = ColumnBuilder.getNew().setColumnProperty(ConstantsClass.REPORT_COLUMN_PROPERTY[0], String.class.getName()) 
    .setFixedWidth(true) 
    .setTitle(ConstantsClass.REPORT_COLUMN_COLUMN_HEAD[0]).setWidth(new Integer(100)) 
    .setHeaderStyle(myStyle) 
    .build(); 
} 

FastReportBuilder drb = new FastReportBuilder(); 
drb.addColumn(myColumn); 
DynamicReport dr = drb.build(); 

return dr; 
+0

谢谢你的建议。但是这并不能帮助我,因为它只允许我根据条件决定是否需要构建列。我的要求是列必须建立并保持在Excel中隐藏在打印中。稍后,只有当我们取消隐藏时才会显示。 – prabhath