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

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

2.3 引用curLGP

在cpt模板的JS脚本中可以使用contentPane.curLGP来获取该对象。

如果报表嵌在网页的iframe中,在iframe外获取curLGP对象如下:

var contentPane = document.getElementById(‘reportFrame‘).contentWindow.contentPane.curLGP;

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.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;
时间: 2024-09-30 15:16:56

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

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

很多报表软件可以利用JS接口来实现更多更复杂的功能.以FineReport为例,开放了大量的JS API给用户,根据执行JS的主体不同可以将分为三大类:FR.FS和contentWindow. 在js语句中执行可以使用FR的方法或者属性,比如说FR.Msg.alert,FR中的方法比如引入finereport.js.FS的方法可以用于数据决策系统中的js接口,比如说FS.tabPane.addItem.而contentWindow是在web页面集成的时候,将F报表嵌入在iframe中,调用报表对

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

在报表开发过程中,有些需求可能无法通过现有的功能来实现,需要开发人员二次开发,以FineReport为例,可以使用网页脚本.API接口等进行深入的开发与控制. 考虑到JS脚本开发的使用较多,这里先先简单介绍如何用JS对字符串进行操作,比如如何判断字符串是否为空,字符串的长度,替换,查找,截取,或者将字符串转换为其他类型等. 1. 字符串的长度 1.1 返回字符串长度 获取字符串长度,可以使用字符串对象的length属性.例如: var txt= "Hello FR";    txt.l

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

JS编辑框: 1.FineReport的js. 作为一款BS产品,browser端的JavaScript是必不可少的. FineReport中的js是已经调用了finereport.js的. 大家知道,预览报表时,报表servlet会将cpt模板转为html,在这个html的head头部中会引入FineReport的js,这个finereport.js中包含了许多内置的function以及一些公有的属性,不管在模板中还是其他网页中,只要引入了finereport.js,就能够通过FR.xxx的形

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

之前分别列出来了finereport常用的文本.时间函数的解释,这里应广大朋友的要求,整理了finereport最常用到的一些函数! SUM SUM(number1,number2,-):求一个指定单元格区域中所有数字之和. Number1,number2,-:1到30个参数或指定单元格区域中所有数字. 备注: 函数将直接键入参数中的数值.逻辑值及文本表达式计算在内. 若参数是数组或引用,则只对数组或单元格引用的数值进行计算. 示例: SUM(70,80)等于150. SUM("70"

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

在报表开发过程中,有些需求可能无法通过现有的功能来实现.须要开发者二次开发,以FineReport为例.能够使用网页脚本.API接口等进行深入的开发与控制. 考虑到JS脚本开发的使用较多.这里先先简介怎样用JS对字符串进行操作.比方怎样推断字符串是否为空,字符串的长度,替换.查找,截取,或者将字符串转换为其它类型等. 1. 字符串的长度 1.1 返回字符串长度 获取字符串长度.能够使用字符串对象的length属性. 比如: var txt= "Hello FR"; txt.length

Web报表工具FineReport中JavaScript的使用

报表软件FineReport采用的是jQuery v1.9.2框架,jQuery是一个快速的,简洁的JavaScript库,能让用户更方便地处理HTML documents.events,实现动画效果,方便地为网站提供AJAX交互,并且它兼容各种浏览器(IE 6.0+, FF 1.5+, Safari 2.0+, Opera 9.0+).FineReport报表解析后最终成为一个html页面,因此可以使用JS对报表进行各种处理,可以选择使用jQuery框架的所有方法对报表进行操作.在此基础上,F

web报表工具FineReport的公式编辑框的语法简介

FINEREPORT用到公式的地方非常多,单元格(以=开头的便被解析为公式),条件显示,数据字典,报表填报属性值定义,图表标题,轴定义,页眉页脚,甚至单元格的其他属性中的鼠标悬浮提示内容都可以写公式,虽然那个编辑框非常不像. 简单的说下自己感觉的公式要注意的几个地方: 1.if语句语法刚接触感觉比较奇怪,if(条件式子,值1,值2),if可以嵌套,if(条件式子1,值1,if(条件式子2,值2,值3)). 2.switch语句也是,具体函数我不说了. 3.对于判断用单等号和双等号都行. 4.对于

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

FineReport使用中遇到的常见报错及解决办法(一) 这里写点抛砖引玉,希望大家能把自己整理的问题及解决方法晾出来,Mark一下,利人利己. 出现问题先搜一下文档上有没有,再看看度娘有没有,再看看论坛有没有.有报错要看日志.下面简单罗列下常见的问题,大多文档上都有提到的. 1.address pool is full: 含义:地址池满,连接数超过并发数上限. 解决办法: 若在FineReport的连接池属性的设置中,已将最大连接数设置得过大,还出现如上的报错,此时通常就是数据库进程(proc

web报表工具FineReport常见的数据集报错错误代码和解释

在使用finereport制作报表,若预览发生错误,很多朋友便手忙脚乱不知所措了,其实没什么,只要看懂报错代码和含义,可以很快的排除错误,这里我就分享一下finereport的数据集报错错误代码和解释,如果有说的不准确的地方,也请各位小伙伴纠正一下. NS-war-remote=错误代码\:1117 压缩部署不支持远程设计 NS_LayerReport_MultiDs=错误代码\:1101 行式引擎不支持多数据源展示 NS_LayerReport_RowCol=错误代码\:1102 行式引擎不支