2010-10-26 34 views
8

Tôi muốn cung cấp tiến trình cho người dùng trong khi báo cáo Jasper đang điền vào báo cáo biên dịch. Về cơ bản tôi muốn để có được sự tiến bộ trong khi điều này được thực hiện:Tiến trình trong khi điền báo cáo jasper

JasperFillManager.fillReport (JasperReport rpt, Bản đồ params, JRDataSource src)

Liệu có cách nào để đạt được điều này?

+1

Chúng tôi đang sử dụng AsynchronousFillHandle và AsynchronousFilllListener, trong đó điền sẽ xảy ra trên một chuỗi khác nhau. Điều này cho phép chúng tôi hiển thị thanh tiến trình của riêng mình, với khả năng hủy. Thật không may, người nghe không đưa ra dấu hiệu tiến triển thực sự, chỉ thông báo về việc hoàn thành hoặc lỗi, do đó thanh tiến trình là một 'vô hạn'. – yshalbar

+0

Chúng tôi đã đạt được điều này, bằng cách sử dụng khung công việc trong ứng dụng RCP/SWT/JFace của chúng tôi. Chúng tôi cũng không có tiến bộ thực sự. Thật kỳ lạ vì có tiến bộ khi xuất ra tệp. Tôi tự hỏi ai là người dễ dàng đóng góp cho Jasper ... – Craig

Trả lời

0

Tôi đang sử dụng các thành phần này từ PrimeFaces để chứng minh rằng báo cáo được tạo ra:

<p:ajaxStatus onstart="dlg.show();" onsuccess="dlg.hide();" /> 
     <p:dialog modal="true" header="Creating Report" widgetVar="dlg" draggable="false" closable="false" > 
      <p:graphicImage value="/resources/images/ajaxloadingbar.gif" /> 
     </p:dialog> 

tôi không có bất kỳ cách nào thực sự để xác định tổng thời gian báo cáo của tôi sẽ làm để biên dịch và điền vào, vì vậy Tôi đã chọn không sử dụng thanh tiến trình thực tế đôi khi sẽ lấp đầy trước khi báo cáo hoàn tất.

+0

Tôi nghĩ rằng tiến trình tạo báo cáo thích hợp vẫn phải được triển khai đúng trong báo cáo jasper và tiếp xúc với khách hàng. – Craig

0

Tôi e rằng không thể theo dõi tiến độ điền báo cáo jasper (như phiên bản 4.0.2) - net.sf.jasperreports.engine.fill.JRFiller không cung cấp bất kỳ loại thông báo tiến độ nào.

2

Từ Jasper Reports phiên bản 4.6.0 Bạn có thể sử dụng FillListener:

AsynchronousFillHandle handle = AsynchronousFillHandle.createHandle(jasperReport, params, dataSource); 
handle.addFillListener(new FillListener() { 

    @Override 
    public void pageUpdated(JasperPrint jasperPrint, int pageIndex) { 
     log.info("pageUpdated " + pageIndex); 
    } 

    @Override 
    public void pageGenerated(JasperPrint jasperPrint, int pageIndex) { 
     log.info("pageGenerated " + pageIndex); 
    } 
}); 

LƯU Ý: để xây dựng 4.6.0 phiên bản có được nguồn tin từ svn và sử dụng kiến:

svn co http://jasperforge.org/svn/repos/jasperreports (user/pass: anonymous) 
cd jasperreports\trunk\jasperreports 
ant jar 
+0

Bây giờ nó có sẵn như là một phần của jasperreports-4.7.0.jar – Cid

Các vấn đề liên quan