wuxiren123

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

          上次介紹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%\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)

          獲取指定名字的控件

          posted on 2016-03-23 15:00 喝水居然長肉 閱讀(227) 評論(0)  編輯  收藏


          只有注冊用戶登錄后才能發表評論。


          網站導航:
           
          主站蜘蛛池模板: 勐海县| 岑溪市| 谢通门县| 巩义市| 全南县| 阿拉尔市| 湘阴县| 水富县| 右玉县| 龙门县| 奇台县| 峨边| 普兰店市| 光泽县| 淮南市| 宁远县| 屏东市| 太白县| 安康市| 壤塘县| 安乡县| 阜宁县| 星座| 司法| 九龙城区| 永平县| 分宜县| 怀安县| 古蔺县| 黄浦区| 龙山县| 镇沅| 招远市| 阿瓦提县| 百色市| 阿勒泰市| 承德市| 横峰县| 自治县| 门源| 报价|