1. 概述
1.1 問題描述
FR 雖然有内置的工具欄,但是位置與樣式比較死,只能固定在報表上方或下方,不靈活。
用戶系統已經自己定義了一套工具欄按鈕,頁面中只需要嵌入報表内容,不使用 FR 的工具欄,如下圖,用戶自己系統裏面自定義的打印與輸出按鈕,放在頁面中報表部分之外,如果需要打印報表,點擊自定義的按鈕,就可調用 FR 的打印方法進行打印,如下圖,那麽這種效果該如何實現呢?
1.2 實現思路
對於這種 iframe 中嵌入的報表情況,點擊自定義按鈕時,先通過 JS 獲取到報表所在 iframe,由於此 iframe 中嵌入了 FR 報表,在初始化的時候會創建一個 contentWindow 對象,故接下來使用 contentWindow 獲取報表,然後獲得 contentWindow 的容器屬性 contentPane,最後調用相應的方法。
如報表嵌入在 ID 爲 reportFrame 的 iframe 中,那麽可以通過下面格式的 JS 代碼,調用 FR 内置工具欄的所有方法:
document.getElementById('reportFrame').contentWindow.contentPane.方法名稱();
如上圖的自定義打印按鈕的 click 事件中就可以寫如下代碼,觸發 FR 的打印方法:
document.getElementById('reportFrame').contentWindow.contentPane.pdfPrint();
1.3 已完成模板
點擊下載:
2. contentPane 下所有工具欄按鈕事件及說明
按鈕名稱 | 方法名稱 | 說明 |
---|---|---|
首頁 | gotoFirstPage() | 跳轉到第一頁 |
末頁 | gotoLastPage() | 跳轉到最後一頁 |
上一頁 | gotoPreviousPage() | 跳轉到上一頁 |
下一頁 | gotoNextPage() | 跳轉到下一頁 |
跳轉到指定頁 | gotoPage(num) | 跳轉到指定 num 頁 |
零客戶端打印 | noClientPrint(popupMarginSetup, ieQuietPrint) | popupMarginSetup:是否彈出設置窗口,true 爲彈出,false 爲不彈出 ieQuietPrint: IE靜默打印設置 true 爲靜默,false 爲不靜默 |
本地打印 | newNativePrint(popupDialog, serverURL) | popupDialog:是否彈出設置窗口,true 爲彈出,false 爲不彈出 serverURL:報表所在的服務器地址,例如 http://localhost:8080 |
pdf導出 | exportReportToPDF() | pdf 導出 |
word導出 | exportReportToWord() | word 導出 |
excel導出 | exportReportToExcel('指定格式') | 參數爲 page 時分頁導出;simple 原樣導出;sheet 分頁分 sheet 導出 |
郵件 | emailReport() | 郵件發送 |
打印預覽 | printPreview() | iframe 中的報表爲分頁預覽或者數據分析時才可以用 |
提交 | writeReport() | 強制提交 |
校驗 | verifyReport() | 數據校驗,只有填報表才可以用 |
校驗并提交 | verifyAndWriteReport() | 先對數據進行校驗,校驗成功則提交數據 |
插入行列 | appendReportRC(num) | 插入 num 行或列,只有填報表才可以用 |
删除行列 | deleteReportRC() | 删除行列,只有填報表才可以用 |
導入excel | importExcel() | 在線導入 Excel,只有填報表才可以用 |
頁面設置 | pageSetup() | 只有數據分析才可以用 |