gpt4 book ai didi

java - 动态碧 Jade : How to remove line when blank

转载 作者:塔克拉玛干 更新时间:2023-11-02 19:03:41 28 4
gpt4 key购买 nike

我正在使用 DynamicJasper 生成一个报告,我想删除一个报告行,当该行为空白时。我知道如何在 JasperReports 中做。

但是谁能建议我如何使用 java 代码通过 DynamicJasper 删除空行。

最佳答案

DynamicJasper API 的帮助下,我还没有找到解决这个问题的简单方法。 .

不过在DJ帮助下可以解决。

这是构建报告的主类的源代码。

public class BasicReportTest {

private JasperPrint m_jasperPrint;
private JasperReport m_jasperReport;
private Map m_params = new HashMap();
private DynamicReport m_dynamicReport;

public DynamicReport buildReport() throws Exception {
Style detailStyle = new Style();
detailStyle.setBorder(Border.THIN);
detailStyle.setBlankWhenNull(true);

Style headerStyle = new Style();
headerStyle.setFont(Font.COURIER_NEW_BIG_BOLD);
headerStyle.setBorder(Border.THIN);
headerStyle.setHorizontalAlign(HorizontalAlign.CENTER);
headerStyle.setVerticalAlign(VerticalAlign.MIDDLE);
headerStyle.setFont(Font.ARIAL_BIG);

FastReportBuilder drb = new FastReportBuilder();
drb.addColumn("State", "state", String.class.getName(), 30, detailStyle, headerStyle)
.addColumn("Branch", "branch", String.class.getName(), 30, detailStyle, headerStyle)
.addColumn("Item", "item", String.class.getName(), 50, detailStyle, headerStyle)
.addColumn("Amount", "amount", Float.class.getName(), 60, detailStyle, headerStyle)
.setTitle("The report with empty rows")
.setUseFullPageWidth(true);

DynamicReport dr = drb.build();
return dr;
}

public void testReport() throws Exception {
m_dynamicReport = buildReport();

JRDataSource dataSource = getDataSource();

m_jasperReport = DynamicJasperHelper.generateJasperReport(m_dynamicReport,
getLayoutManager(), m_params);

m_jasperPrint = JasperFillManager.fillReport(m_jasperReport, m_params, dataSource);

exportReport();
}

protected LayoutManager getLayoutManager() {
return new CustomLayoutManager();
}

/*... Some code ... */

public static void main(String[] args) throws Exception {
BasicReportTest test = new BasicReportTest();
test.testReport();
}
}

这串代码 detailStyle.setBlankWhenNull(true); 让我们能够在 textField< 中将 null 值显示为空白。就像我们会使用表达式

<textField isBlankWhenNull="true">

jrxml 文件中。

但是我们还需要像这样“生成”xml代码:

<textField isBlankWhenNull="true">
<reportElement ... isRemoveLineWhenBlank="true"/>

正如我在上面提到的,DJ 不包含任何用于调用 JRElement.setRemoveLineWhenBlank(boolean isRemoveLineWhenBlank) 的公共(public)方法(包装器)方法。

这就是我使用自定义 LayoutManager 的原因类 - 在我的示例中,它是一个 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

关于java - 动态碧 Jade : How to remove line when blank,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3123547/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com