Posted on 2012-09-06 23:19
FineReport——報表技術領跑者 閱讀(2541)
評論(0) 編輯 收藏 所屬分類:
Java報表使用心得
以下情況是我的學習FR中自己遇到的問題:
1.在制作模板時,如何將報表中的值傳遞到超鏈接網頁呢?
在項目中以frame方法把F1.CPT放到項目的頁面中,對F1.CPT做網絡報表超鏈接F2.CPT,然后在F2.cpt頁面中,做個超鏈接的網頁,超鏈接的URL里面輸入地址,并在下面輸入要傳遞的參數名和參數值,然后在網頁中通過request.getParameter("超級鏈接中的參數名")獲取參數就可以直接使用了。
2.一個模板的2個sheet之間的取值和校驗?
在某個單元格里直接輸入=sheetname!cellname 來實現跨sheet取值,eg:=sheet2!A2 就是sheet2表單的A2單元格的值,校驗同樣原理。
3.下拉框的選值發生變化:
在下拉框里設置好數據源,顯示值和實際值,但在選中某個值之后卻發現選中的值變為了實際值了,在這里需要在這個單元格的樣式里重新把數據源再設置一遍就可以了。
4.超鏈接傳值,如何動態的傳別的對應單元格(一一對應的單元格)的值?
在超鏈接中,正常傳遞參數eg: PKID='${PKID}',然后在右邊的參數欄里添加參數PKID,其值選擇公式,協商你要傳遞的值的 單元格
5.JS取值失敗:
在用JS GetCellValue取值的時候會發現取值不對,或者為空。這有可能是因為你要取值的單元格是在某個擴展行的后面了,所以導致單元格的位置發生了變化,所以盡量要在擴展行的上面放置你JS要取的值。
6.報表的的端口:
FR自身有一個端口8075,但我們在使用的過程中一般都不會用8075作為FR的端口來使用,通常和TOMCAT之類的服務結合起來使用。
7.數據混亂,不是一一對應的:
首先檢查數據庫看數據是不是一一對應的,如果沒錯,那可能是單元格的左父格設置問題,建議自己多做幾張實踐下就會明白左父格的含義。
8.模擬GridView的一些功能可以去看下面的連接:
http://bbs.finereport.com/thread-14558-1-1.html
9.批量導出報表:
http://localhost:8079/WebReport/ReportServer?reportlets=({reportlet:/FRTable501.cpt},{reportlet:/FRTable601.cpt})&format=excel&__filename__=name 但該功能在導出13張報表的時候就會出錯。
10.點擊頁面彈出子頁面,按鈕的點擊事件
FR.showIframeDialog({
url:"ReportServer?reportlet=SMES/NewAdd.cpt&op=write",
title:"title",
width:600,
height:600
})
或者
FR.showDialog("測試", 400, 400, "<div> <iframe id='reportFrame' style='width:100%;height:350px' src='http://localhost:8075/WebReport/ReportServer?reportlet=SMES/NewEdit.cpt&op=write&KID=${CopID}'> </iframe></div>", {collapsible:true});
11.子頁面刷新父頁面
在父頁面做個按鈕,ID為btnRefresh 點擊事件為:location.reload();
在子頁面的填報成功事件里寫:
var top = window.parent;
var reportPane = top.contentPane;
var btn = reportPane.curLGP.write.getWidgetByName("btnRefresh");
btn.fireEvent("click");
12.另外大家在畫模板的時候,特別是對一些表格的制作方面,最好是每個單元格都是合并的單元格,這樣以備后來的修改方便。如果每個數據都僅占用一個單元格,后期需要發生變化 就會給修改表格的樣式帶來麻煩。