Web報表工具FineReport的JS API開發(二)

來源:互聯網
上載者:User

上次介紹FineReport的JS API中的第一類開發--FR,這次就來介紹一下FS和contentWindow類的開發。

1 FS

FS是資料決策系統中的js介面,比如說FS.tabPane.addItem,先介紹幾類操作:

1.1 FS.Trans.signOut()

退出決策平台系統

1.2FS.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%\demo\basic\DetailedDrillA.cpt為例,該模板中實現了在當前視窗的切入功能,下面將在當前視窗開啟換成在新的tab頁面中開啟。

1.4.3 超級連結

開啟模板,進入A4儲存格的超級連結設定介面,如下圖:


將訂單明細的切入修改成在資料決策中開啟一個新的tab頁面,新tab頁面的標題為訂單明細。

新增一個JavaScript的超級連結,添加參數ID,參數值為目前的儲存格的值,即ID=$$$,如下圖:

通過

window.parent.FS.tabPane.addItem({title:"baidu",src:"http://www.baidu.com"})

實現在新的tab中開啟頁面。

title:訂單明細

src:訂單明細模板的路徑

具體如下圖:

這裡要注意,src最後的&符號為參數的傳遞,即將目前的儲存格的值傳遞給參數ID,然後再src的路徑後面拼接字串,將ID參數的值傳遞給需要開啟的新模板中的訂單號參數。

代碼如下:

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. 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這個控制項:

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)

擷取指定名字的控制項







聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.