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。荣誉