Java DynamicJasper:空白时如何删除行
我正在使用Java DynamicJasper:空白时如何删除行,java,jasper-reports,dynamic-jasper,Java,Jasper Reports,Dynamic Jasper,我正在使用DynamicJasper生成一个报告,我想在报告行为空时删除一个报告行。我知道如何在JasperReports做 但是有谁能建议我如何使用java代码通过DynamicJasper删除空行。我还没有找到一个简单的方法来解决这个问题 但它可以通过DJ帮助解决 这是用于生成报表的主类的源代码 公共类基本报告测试{ 私人茉莉花m_茉莉花; 私人JasperReport m_JasperReport; 私有映射m_params=新HashMap(); 私有动态报告m_动态报告; 公共Dyna
DynamicJasper
生成一个报告,我想在报告行为空时删除一个报告行。我知道如何在JasperReports做
但是有谁能建议我如何使用java代码通过
DynamicJasper
删除空行。我还没有找到一个简单的方法来解决这个问题
但它可以通过DJ
帮助解决
这是用于生成报表的主类的源代码
公共类基本报告测试{
私人茉莉花m_茉莉花;
私人JasperReport m_JasperReport;
私有映射m_params=新HashMap();
私有动态报告m_动态报告;
公共DynamicReport buildReport()引发异常{
Style detailStyle=新样式();
detailStyle.setboorder(Border.THIN);
detailStyle.setblankhennull(true);
样式头样式=新样式();
headerStyle.setFont(Font.COURIER\u NEW\u BIG\u BOLD);
头型。后坐顺序(边框。薄);
headerStyle.setHorizontalAlign(HorizontalAlign.CENTER);
头型垂直排列(垂直排列中间);
headerStyle.setFont(Font.ARIAL\u BIG);
FastReportBuilder drb=新的FastReportBuilder();
drb.addColumn(“State”、“State”、String.class.getName()、30、detailStyle、headerStyle)
.addColumn(“分支”,“分支”,String.class.getName(),30,detailStyle,headerStyle)
.addColumn(“项”,“项”,String.class.getName(),50,detailStyle,headerStyle)
.addColumn(“金额”、“金额”、Float.class.getName()、60、detailStyle、headerStyle)
.setTitle(“包含空行的报告”)
.setUseFullPageWidth(真);
DynamicReport dr=drb.build();
返回dr;
}
public void testReport()引发异常{
m_dynamicReport=buildReport();
JRDataSource dataSource=getDataSource();
m_jasperReport=dynamicjasperreper.generateJasperReport(m_dynamicReport,
getLayoutManager(),m_参数);
m_jasperPrint=JasperFillManager.fillReport(m_jasperReport,m_params,dataSource);
exportReport();
}
受保护的LayoutManager getLayoutManager(){
返回新的CustomLayoutManager();
}
/*…一些代码*/
公共静态void main(字符串[]args)引发异常{
BasicReportTest=新的BasicReportTest();
test.testReport();
}
}
此代码字符串detailStyle.setblankhennull(true)代码>使我们能够在文本字段中将空值显示为空白。就像我们会使用这个表达式一样
在jrxml
文件中
但我们还需要像这样“生成”xml代码:
如上所述,DJ
不包含任何用于调用方法的公共方法(包装器)
这就是我使用定制类的原因——在我的示例中,它是一个CustomLayoutManager
类
以下是它的源代码:
public class CustomLayoutManager extends ClassicLayoutManager {
@Override
protected void transformDetailBandTextField(AbstractColumn column, JRDesignTextField textField) {
super.transformDetailBandTextField(column, textField);
if (column.getStyle().isBlankWhenNull()) {
textField.setRemoveLineWhenBlank(true);
}
}
}
我已经覆盖了DJ
引擎用于构建Detail
波段的方法transformDetailBandTextField
。你能再详细说明一下吗?嘿,谢谢你的重播。我有几行没有数据。我想把它们去掉。我如何用动态Jasper去除它们?很有魅力Alex。荣誉