上次介绍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') 

FineReport的填报预览及表单预览下contentPane下都会有一个curLGP对象,即current logicpane。

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()

校验并提交报表,只有填报表才可以用

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)

获取指定名字的控件

Web报表工具FineReport的JS API开发(二)的更多相关文章

  1. Web报表工具FineReport的JS API开发(一)

    很多报表软件可以利用JS接口来实现更多更复杂的功能.以FineReport为例,开放了大量的JS API给用户,根据执行JS的主体不同可以将分为三大类:FR.FS和contentWindow. 在js ...

  2. Web报表工具FineReport的JS开发之字符串

    在报表开发过程中,有些需求可能无法通过现有的功能来实现,需要开发人员二次开发,以FineReport为例,可以使用网页脚本.API接口等进行深入的开发与控制. 考虑到JS脚本开发的使用较多,这里先先简 ...

  3. web报表工具FineReport的JS编辑框和URL地址栏语法简介

    JS编辑框: 1.FineReport的js. 作为一款BS产品,browser端的JavaScript是必不可少的. FineReport中的js是已经调用了finereport.js的. 大家知道 ...

  4. web报表工具FineReport使用中遇到的常见报错及解决办法(二)

    web报表工具FineReport使用中遇到的常见报错及解决办法(二) 这里写点抛砖引玉,希望大家能把自己整理的问题及解决方法晾出来,Mark一下,利人利己. 出现问题先搜一下文档上有没有,再看看度娘 ...

  5. web报表工具FineReport常用函数的用法总结(日期和时间函数)

    web报表工具FineReport常用函数的用法总结(日期和时间函数) 说明:凡函数中以日期作为参数因子的,其中日期的形式都必须是yy/mm/dd.而且必须用英文环境下双引号(" " ...

  6. web报表工具FineReport最经常用到部分函数详解

    之前分别列出来了finereport常用的文本.时间函数的解释,这里应广大朋友的要求,整理了finereport最常用到的一些函数! SUM SUM(number1,number2,-):求一个指定单 ...

  7. web报表工具FineReport经常使用函数的使用方法总结(日期和时间函数)

    web报表工具FineReport经常使用函数的使用方法总结(日期和时间函数) 说明:凡函数中以日期作为參数因子的,当中日期的形式都必须是yy/mm/dd.并且必须用英文环境下双引號(" & ...

  8. Web报表工具FineReport二次开发JS之字符串

    在报表开发过程中,有些需求可能无法通过现有的功能来实现,需要开发人员二次开发,以FineReport为例,可以使用网页脚本.API接口等进行深入的开发与控制. 考虑到JS脚本开发的使用较多,这里先先简 ...

  9. Web报表工具FineReport中JavaScript的使用

    报表软件FineReport采用的是jQuery v1.9.2框架,jQuery是一个快速的,简洁的JavaScript库,能让用户更方便地处理HTML documents.events,实现动画效果 ...

随机推荐

  1. [.NET逆向] .net IL 指令速查(net破解必备)

    .net的破解比较特殊,很多人看见IL就头疼,最近在研究的时候发现了这个东东 相信对广大学习net破解的人一定有帮助 .对上指令表一查,跟读原代码没什么区别了, 名称 说明 Add 将两个值相加并将结 ...

  2. string转byte[]

    static byte[] GetBytes(string str) { byte[] bytes = new byte[str.Length * sizeof(char)]; System.Buff ...

  3. jQuery弹出美女大图片

    效果:http://hovertree.com/texiao/jqimg/2/ 效果图: 下载:http://hovertree.com/h/bjaf/jdaqepet.htm HTML代码: < ...

  4. 背水一战 Windows 10 (35) - 控件(弹出类): FlyoutBase, Flyout, MenuFlyout

    [源码下载] 背水一战 Windows 10 (35) - 控件(弹出类): FlyoutBase, Flyout, MenuFlyout 作者:webabcd 介绍背水一战 Windows 10 之 ...

  5. EF配置模型

    配置方法 EF里面的默认配置有两个方法,一个是用Data Annotations(在命名空间System.ComponentModel.DataAnnotations;),直接作用于类的属性上面,还有 ...

  6. 线程池深入(li)

    java线程池.在jdk5之后为我们提供了线程池,只需要使用API,不用去考虑线程池里特殊的处理机制.jdk5线程池分好多种,固定尺寸的线程池.可变尺寸连接池等.常用的是ThreadPoolExecu ...

  7. bzoj 1001狼抓兔子(对偶图+最短路)最大流

    推荐文章:<浅析最大最小定理在信息学竞赛中的应用>--周冬 题目 现在小朋友们最喜欢的"喜羊羊与灰太狼",话说灰太狼抓羊不到,但抓兔子还是比较在行的, 而且现在的兔子还 ...

  8. golang中如何使用http,socket5代理

    Golang Http use socket5 proxy 因为最近想爬取一些网站上的视频,无奈网站在墙外,只能通过代理进行爬取,因此在网上搜索关于golang使用代理的方法. 功夫不负有心人,最后我 ...

  9. PHP7新增 功能

    php7发布已有半月,最近有时间了解一下php7的新特性,当然,这个版本最大的特点是性能的提升.在下并非高手,欢迎大家指出错误,同时期待共同交流 1.在use语句增加了group支持use FooLi ...

  10. 基于 Eclipse 的 MapReduce 开发环境搭建

    文 / vincentzh 原文连接:http://www.cnblogs.com/vincentzh/p/6055850.html 上周末本来要写这篇的,结果没想到上周末自己环境都没有搭起来,运行起 ...