摘要:如果報表嵌在網頁的中,在外獲取對象如下常用方法方法說明獲取指定單元格中的控件獲取指定名字的控件獲取指定名稱的擴展控件,返回一個數組表單預覽或參數界面,都有一個對象。
上次介紹FineReport的JS API中的第一類開發--FR,這次就來介紹一下FS和contentWindow類的開發。
1 FS
FS是數據決策系統中的js接口,比如說FS.tabPane.addItem,先介紹幾類操作:
1.1 FS.Trans.signOut()
退出決策平臺系統
1.2 FS.tabPane._doCloseTab(FS.tabPane._getSelectedTab())
關閉當前決策平臺的標簽
1.3 FS.tabPane.addItem({title:"baidu",src:"http://www.baidu.com"})
在決策平臺中打開新標簽頁
1.4示例
前面兩個接口很簡單,這里不再舉例說明,下面詳細介紹一下第三個接口,即在數據決策系統中打開一個新tab。
1.4.1 描述
數據鉆取是使用超級鏈接實現,打開方式有三種,當前窗口,對話框,新窗口。前面2種方式很好理解,第三種在新窗口中打開,即在瀏覽器端打開一個新的tab頁面,如果是在數據決策系統中使用,希望實現在決策系統框架下新增一個tab頁簽,而不是在瀏覽器端重新打開一個窗口,這個該怎么實現呢?
1.4.2 模板
下面以%FR_HOME%demoasicDetailedDrillA.cpt為例,該模板中實現了在當前窗口的鉆取功能,下面將在當前窗口打開換成在新的tab頁面中打開。
1.4.3 超級鏈接
打開模板,進入A4單元格的超級鏈接設置界面,如下圖:
將訂單明細的鉆取修改成在數據決策中打開一個新的tab頁面,新tab頁面的標題為訂單明細。
新增一個JavaScript的超級鏈接,添加參數ID,參數值為當前單元格的值,即ID=$$$,如下圖:
通過
Js代碼
window.parent.FS.tabPane.addItem({title:"baidu",src:"http://www.baidu.com"})
實現在新的tab中打開頁面。
title:訂單明細
src:訂單明細模板的路徑
具體如下圖:
這里要注意,src最后的&符號為參數的傳遞,即將當前單元格的值傳遞給參數ID,然后再src的路徑后面拼接字符串,將ID參數的值傳遞給需要打開的新模板中的訂單號參數。
代碼如下:
Js代碼
window.parent.FS.tabPane.addItem({title:"訂單明細",src:"${servletURL}?reportlet=demo/basic/DetailedDrillB.cpt&訂單號="+ID})
1.4.4 效果查看
2 contentWindow
2.1介紹:
contentWindow是在web頁面集成的時候,將FineReport報表嵌入在iframe中,調用報表對象時使用的接口,比如說:document.getElementById("reportFrame").contentWindow,其中document.getElementById("reportFrame")是獲取iframe對象,contentWindow是報表對象,相當于html中的window對象。
在普通模板的JS腳本中可以直接使用contentWindow下的屬性,如直接使用contentWindow中的contentPane,而不用寫contentWindow,這是因為js腳本本身就在FR模板中執行。
網頁中使用iframe嵌入報表,如果文檔包含框架(frame或iframe標簽),框架中嵌入了FR報表,則會創建一個contentWindow對象先獲取iframe,再調用contentWindow,然后使用contentWindow下面的屬性
var contentWindow = document.getElementById("reportFrame").contentWindow.XXX;
不論是web頁面集成里面還是直接在FR模板之中,contentWindow下面最常用的屬性當屬contentPane,所以下面將詳細介紹contentPane。
contentPane是contentWidow下面的最常用的一個屬性,為存放報表內容的容器。
2引用contentPane
在普通模板的JS腳本中直接使用contentPane就能獲取到該對象。
如果報表嵌在網頁的iframe中,首先在iframe中獲取contentWindow,然后獲取屬性contentPane對象,如下:
var contentPane = document.getElementById("reportFrame").contentWindow.contentPane;
比如,需要在網頁中獲取報表填報頁面的一個按鈕,并執行點擊事件:
document.getElementById("reportFrame").contentWindow.contentPane.getWidgetByName("控件名").fireEvent("click")
2.2.1 contentPane常用屬性
parameterEl
返回對象參數界面
curLGP
返回curLGP對象,只有填報預覽及表單預覽下才有
currentPageIndex
當前所在頁,只有分頁預覽才有
reportTotalPage
總頁數,只有分頁預覽報表才有
zoom
縮放比例
2.2.2 contentPane常用方法
方法
說明
appendReportRC(num)
在選中行后面插入num行,只有填報表才可以用
deleteReportRC()
刪除指定行,只有填報表才可以用
deleteRows(param)
批量刪除param所在記錄,param為一竄單元格坐標的字符串數組
emailReport()
郵件發送
exportReportToExcel("指定格式")
參數為page時分頁導出;simple原樣導出;sheet分頁分sheet導出
exportReportToImage()
輸出圖片
exportReportToPDF()
輸出pdf
exportReportToWord()
輸出word
fireEvent()
觸發事件
appletPrint()
applet打印
flashPrint()
flash打印
getWidgetByName()
獲取填報頁面的控件
getCellValue(cell)/getCellValue(col,row)
獲取單元格值,只有填報下有
gotoFirstPage()
跳轉到第一頁,只有分頁預覽報表有
gotoLastPage()
跳轉到最后一頁,只有分頁預覽報表有
gotoPreviousPage()
跳轉到上一頁,只有分頁預覽報表有
gotoNextPage()
跳轉到下一頁,只有分頁預覽報表有
gotoPage(num)
跳轉到指定num頁,只有分頁預覽報表有
importExcelData()
在線導入excel,只有填報表才可以用
on()
監聽
pdfPrint()
pdf打印
printPreview()
打印預覽,只有數據分析時才有
pageSetup()
頁面設置,只有數據分析才有
scale(str)
縮放,str為"+"時放大,為"-"時縮小
setCellValue(cell,null,value)/setCellValue(col,row,value)
給單元格賦值,只有填報表才有
verifyReport()
數據校驗,只有填報表才可以用
writeReport()
校驗并提交報表,只有填報表才可以用
FineReport的填報預覽及表單預覽下contentPane下都會有一個curLGP對象,即current logicpane。
2.3 引用curLGP
在cpt模板的JS腳本中可以使用contentPane.curLGP來獲取該對象。
如果報表嵌在網頁的iframe中,在iframe外獲取curLGP對象如下:
var contentPane = document.getElementById("reportFrame").contentWindow.contentPane.curLGP;
2.3.1 curLGP常用屬性:
屬性
說明
currentTDCell
填報預覽,當前焦點所在單元格
dirtyCell
填報預覽,編輯過的單元格
write
填報預覽,返回write對象
form
表單預覽或參數界面,返回form對象
2.3.2 curLGP常用方法
方法
說明
getCellValue(cell)/getCellValue(col, row)
獲取指定格子的值,只有填報下有
setCellValue(cell, null, value)/setCellValue(col, row, value)
設置指定格子的值,只有填報下有
2.4 write
填報預覽時,curLGP下有一個write對象。
2.4.1 引用write
在cpt模板的JS腳本中可以使用contentPane.curLGP.write來獲取該對象。
如果報表嵌在網頁的iframe中,在iframe外獲取write對象如下:
var contentPane = document.getElementByID("reportFrame").contentWindow.contentPane.curLGP.write;
2.4.2 write常用方法
方法
說明
getWidgetByCell(cell)
獲取指定單元格中的控件
getWidgetByName(name)
獲取指定名字的控件
getWidgetsByName(name)
獲取指定名稱的擴展控件,返回一個數組
2.5 form
表單預覽或參數界面,都有一個form對象。
2.5.1引用form
在cpt模板的JS腳本中可以使用this.options.form來獲取該對象,如獲取參數界面下拉框p1這個控件:
Js代碼
var widget=this.options.form.getWidgetByName(p1)
如果報表嵌在網頁的iframe中,在iframe外獲取form對象如下:
var contentPane = document.getElementByID("reportFrame").contentWindow.contentPane.curLGP.form;
2.5.2 form常用屬性及方法:
屬性或方法
說明
name_widgets
form中的所有控件集合
getValueByName(name)
獲取指定名字控件的值
getWidgetByName(name)
獲取指定名字的控件
文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。
轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/78991.html
FineReport支持多種不同的導出方式,直接使用FineReport內置導出按鈕可以非??旖莘奖愕膩韺Ω鞣N格式的輸出,但是我們在web頁面集成中的時候,往往只想將報表內容嵌入到iframe中,而工具欄以及工具欄上的按鈕都會隱藏掉,而使用web頁面自定義的按鈕,那么,此時,這種自定義按鈕如何實現導出呢? showImg(https://segmentfault.com/img/bVJR1H?w=...
摘要:它將在中查找與相匹配的子字符串,然后用來替換這些子串。這里舉個字符串替換的例子結果將返回字符串的查找方法用于檢索字符串中指定的子字符串,他將返回中第一個與相匹配的子串的起始位置。其中是起始,提取長度為的新字符串。 在報表開發過程中,有些需求可能無法通過現有的功能來實現,需要開發人員二次開發,以FineReport為例,可以使用網頁腳本、API接口等進行深入的開發與控制??紤]到JS腳本開...
摘要:問題描述,組織樹報表中由與父來實現組織樹報表,若層級數較多時,對每個單元格設置過濾條件和形態會比較繁瑣,因此提供了一種特殊的數據集樹數據集,只需要簡單的設置就能自動遞歸出層級,方便的實現如下圖組織樹報表圖一圖二構建樹新建報表,添加數據集新建 問題描述FineReport,組織樹報表中由id與父id來實現組織樹報表,若層級數較多時,對每個單元格設置過濾條件和形態會比較繁瑣,因此FineR...
摘要:移動端報表使用方法安裝好插件后,在瀏覽器中調用時,需要在報表路徑后面加上參數。另外移動端的插件,圖表是只支持顯示新圖表。 HTML5報表插件安裝及使用編輯 插件安裝插件網址以及設計器插件安裝方法和服務器安裝插件的方法可以官網上面搜索,這里就不做詳細介紹了。 移動端HTML5報表使用方法安裝好插件后,在瀏覽器中調用時,需要在報表路徑后面加上參數op=h5。但是PC端不完全支持H5效果。移...
閱讀 2371·2023-04-25 20:07
閱讀 3307·2021-11-25 09:43
閱讀 3666·2021-11-16 11:44
閱讀 2532·2021-11-08 13:14
閱讀 3182·2021-10-19 11:46
閱讀 898·2021-09-28 09:36
閱讀 2984·2021-09-22 10:56
閱讀 2377·2021-09-10 10:51