我正在生成一個報告與DynamicJasper
,我想刪除一個報告行,當行是空白的。我知道如何在JasperReports中完成。DynamicJasper:如何刪除行時空白
但任何人都可以建議我如何使用java代碼通過DynamicJasper
刪除空白行。
我正在生成一個報告與DynamicJasper
,我想刪除一個報告行,當行是空白的。我知道如何在JasperReports中完成。DynamicJasper:如何刪除行時空白
但任何人都可以建議我如何使用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);
此字符串給我們的能力,以顯示null
價值textField
爲空白。這就像我們將使用表達式
<textField isBlankWhenNull="true">
in jrxml
file。
但是,我們也需要「生成」 XML代碼:
<textField isBlankWhenNull="true">
<reportElement ... isRemoveLineWhenBlank="true"/>
正如我在DJ
上述不包含調用JRElement.setRemoveLineWhenBlank(boolean isRemoveLineWhenBlank)方法,任何公開的方法(包裝)。
這就是爲什麼我使用定製的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);
}
}
}
我overrided是DJ
的引擎用於建設Detail
帶的方法transformDetailBandTextField
。
工作就像一個魅力,亞歷克斯。榮譽。 – inanutshellus 2014-06-05 03:46:04
@Gabriel歡迎您:) – 2014-06-05 06:13:06
你能再細說一下嗎? – 2010-06-26 10:46:18
嘿Purushotham感謝重播。我有幾行沒有數據。我想刪除它們。我如何使用動態Jasper刪除它們? – jaxb 2010-06-26 13:11:07