文档章节

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

九月你好123
 九月你好123
发布于 2016/03/17 14:11
字数 1661
阅读 861
收藏 1

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

js语句中执行可以使用FR的方法或者属性,比如说FR.Msg.alertFR中的方法比如引入finereport.jsFS的方法可以用于数据决策系统中的js接口,比如说FS.tabPane.addItem。而contentWindow是在web页面集成的时候,将F报表嵌入在iframe中,调用报表对象时使用的接口,比如说:document.getElementById('reportFrame').contentWindow,其中document.getElementById('reportFrame')是获取iframe对象,contentWindow是报表对象,相当于html中的window对象。

由于篇幅,这里先介绍FR

FR

大家知道,预览报表时,报表servlet会将cpt模板转为html,在这个htmlhead头部中会引入FRjs,如下:

Js代码 

<script type="text/javascript" src="/WebReport/ReportServer?op=emb&resource=finereport.js"></script>

这个finereport.js中包含了许多内置的function以及一些公有的属性,不管在模板中还是其他网页中,只要引入了finereport.js,就能够通过FR.xxx的形式调用公有的属性与方法

 

比如,在模板中使用,访问模板时会自动引入finereport.js,因此在模板的js脚本中可以直接使用FR.xxx来调用方法,如下图:


或者需要在自己的网页如某个jsp页面中调用FR的方法,要先引入finereport.js,再通过FR.xxx来调用,如下:

<html>
 <head>
  <script type="text/javascript" src="/WebReport/ReportServer?op=emb&resource=finereport.js"></script>
  <script type="text/javascript">
	var url = FR.cjkEncode("/WebReport/ReportServer?reportlet=Gettingstarted.cpt&地区=华东");
	window.open(url);
  </script>
 </head>
 <body> 
 </body>
</html>

这里主要细讲一下MsgAjax方法。

1  FR.Msg

FR内置了统一风格的消息框,替代实现了window中的alertconfirm以及prompt

1.1  FR.Msg.alert方法

使用方法

FR.Msg.alert(title, message, callback),弹出警告框。

title:对话框标题;message:对话框里显示的提示详细;callback:点击确定时调用的方法。

注意,callback是一个function方法,所以在写callback的时候必须为一个方法。

 

如在某个控件增加编辑结束事件,JS为:FR.Msg.alert("警告","值错误");,在该控件编辑结束后,会看到如下图所示的对话框:



1.2  FR.Msg.confirm方法

使用方法

FR.Msg.confirm(title, message, callback, min_width),弹出带有确认和取消按钮的对话框。

title:对话框标题;message:对话框里显示的提示详细;cellback:点击确定时调用的方法;min_width:表示最小宽度。

 

如在某个删除按钮中增加点击事件,JS为:FR.Msg.confirm("警告","确认要删除吗?");,点击删除行时会看到,会看到如下图所示的对话框:



注意,此方法无法获取点击“确定”或“取消”的返回值,此方法主要是触发回调函数的。若希望通过返回值的不同来进行下面的操作,则可使用window中的confirm

1.3  FR.Msg.prompt方法

使用方法

FR.Msg.prompt(title, message, value, callback, min_width),可以传递参数的对话框

title:对话框标题;message:对话框里显示的提示详细;callback:点击确定时调用的方法;Value:参数传递的默认值;min_width:表示最小宽度。

 

如在某个控件增加点击事件,JS为:FR.Msg.prompt("输入","爱好","运动");,在该控件被点击时,会看到如下图所示的对话框:



1.4  FR.Msg.toast方法

使用方法

FR.Msg.toast(message),报表从页面右上角弹出来的那个长条形信息。

message:弹出的信息

 

如给某个模板增加填报成功事件,JS为:FR.Msg.toast("填报成功");,在点击提交按钮,提交成功后会看到页面的右上角弹出如下对话框:



2  FR.ajax

大家知道JS是前端代码,直接由浏览器来执行,不会与服务器进行交互。

通过AJAX,用户就可以使用JavaScriptXMLHttpRequest对象来直接与服务器进行通信。且在不重载页面的情况下与Web服务器交换数据,也就是所谓的异步请求。

2.1 调用语法

 

如下ajax示例:

FR.ajax({
   url: "some.jsp",
   type: "GET",
   data: "p1=a&p2=b",
   success: function(msg){
     alert( "Data Saved: " + msg );
   }
});

2.2  ajax中的选项说明

上例中的urltypedata等都是ajax请求设置时的选项,这些选项都是可选的,以下列出常用选项并说明。

asyncBoolean

默认为true,所有请求均为异步请求。如果需要发送同步请求,请将此选项设置为 false

注:同步请求将锁住浏览器,用户其它操作必须等待请求完成才可以执行。

completeFunction

 

请求完成后回调函数(请求成功或失败之后均调用)。如下:

FR.ajax({
   url: "some.jsp",
   complete: function(XMLHttpRequest, textStatus){
     alert(this.url);
   }
});

其中参数为XMLHttpRequest 对象和一个描述成功请求是否成功的字符串(成功textStatus=success,否则为error)

function中可以通过this.xxx来调用该ajax请求中的选项值。

dataObject/String

发送到服务器的数据。GET请求中将自动转换为请求字符串格式,附加在url后。

值必须是Key/Value格式,可以是字符串如"p1=pavalue&p2=p2value",或者是对象如{p1:p1value,p2:p2value}

dataTypeString

预期服务器返回的数据类型。如果不指定,将自动根据HTTPMIME信息来智能判断。可用值有:

"xml":返回 XML 文档

"html":返回纯文本HTML信息;包含的script标签会在插入dom时执行。

"script":返回纯文本JavaScript代码。

"json":返回JSON数据。

"text"返回纯文本字符串。

errorFunction

 

请求失败时调用此函数。如下:

FR.ajax({
   url: "some.jsp",
   error: function(XMLHttpRequest, textStatus, errorThrown){
     alert(this.url);
   }
});

 其中参数为XMLHttpRequest 对象、错误信息、捕获的异常对象。

 

通常textStatuserrorThrown之中只有一个会包含信息。

 

successFunction

 

请求成功后的回调函数,如下:

FR.ajax({
   url: "/WebReport/a.html",
   success: function(data, textStatus){
     alert(this.url);
   }
});

 其中data为服务器返回的,并根据dataType参数进行处理后的数据。textStatus为状态值sucess

 

timeoutNumber

 

设置请求超时时间(毫秒)。此设置将覆盖全局设置。

 

ypeString

 

请求方式POSTGET,默认为GET

 

urlString

 

发送请求的地址。

 

 

关于FScontentWindow,会在下一节介绍。


© 著作权归作者所有

九月你好123
粉丝 10
博文 111
码字总数 112722
作品 0
杭州
私信 提问
如何把报表放到网页中显示(Web页面与报表简单集成例子)

1.问题描述 现在用户开发的系统基本上趋向于BS架构的浏览器/服务器模式,这些系统可能由不同的语言开发,如HTML、ASP、JSP、PHP等,因此需要将制作好的报表嵌入到这些页面中。 FineReport制作...

九月你好123
2015/08/03
812
0
Web报表页面如何传递中文参数

1、场景描述 在用报表开发工具FineReport设计的web报表中,给iframe设置src嵌入某个报表时,往往会给报表传递初始的参数值,例如: <iframe id="reportFrame" width="900" height="400" src=......

九月你好123
2015/08/18
72
0
FineReport中JS如何自定义按钮导出

FineReport支持多种不同的导出方式,直接使用FineReport内置导出按钮可以非常快捷方便的来对各种格式的输出,但是我们在web页面集成中的时候,往往只想将报表内容嵌入到iframe中,而工具栏以...

雄霸天下啦
2018/06/26
0
0
根据条件控制参数控件是否显示(可用)

1、应用场景 在用报表工具FineReport设计报表时,使用参数控件时,有时我们希望部分参数控件在没满足条件时不显示,满足条件后再显示,如下图效果:只有前面的下拉框选择了内容之后,后一层下...

九月你好123
2015/08/13
33
0
方法对头,报表模板维护其实很简单

经常我们会遇到这样的一种情况,别人做的一张很复杂的报表模板,我们拿到后需要修改,但是却不知道该如何下手,不知道他原来在哪里写了什么东西……一个一个查看十分的麻烦…… 那么我们就可...

九月你好123
2015/07/16
82
0

没有更多内容

加载失败,请刷新页面

加载更多

OSChina 周六乱弹 —— 早上儿子问我他是怎么来的

Osc乱弹歌单(2019)请戳(这里) 【今日歌曲】 @凉小生 :#今日歌曲推荐# 少点戾气,愿你和这个世界温柔以待。中岛美嘉的单曲《僕が死のうと思ったのは (曾经我也想过一了百了)》 《僕が死の...

小小编辑
今天
2.1K
14
Excption与Error包结构,OOM 你遇到过哪些情况,SOF 你遇到过哪些情况

Throwable 是 Java 中所有错误与异常的超类,Throwable 包含两个子类,Error 与 Exception 。用于指示发生了异常情况。 Java 抛出的 Throwable 可以分成三种类型。 被检查异常(checked Exc...

Garphy
今天
38
0
计算机实现原理专题--二进制减法器(二)

在计算机实现原理专题--二进制减法器(一)中说明了基本原理,现准备说明如何来实现。 首先第一步255-b运算相当于对b进行按位取反,因此可将8个非门组成如下图的形式: 由于每次做减法时,我...

FAT_mt
昨天
40
0
好程序员大数据学习路线分享函数+map映射+元祖

好程序员大数据学习路线分享函数+map映射+元祖,大数据各个平台上的语言实现 hadoop 由java实现,2003年至今,三大块:数据处理,数据存储,数据计算 存储: hbase --> 数据成表 处理: hive --> 数...

好程序员官方
昨天
61
0
tabel 中含有复选框的列 数据理解

1、el-ui中实现某一列为复选框 实现多选非常简单: 手动添加一个el-table-column,设type属性为selction即可; 2、@selection-change事件:选项发生勾选状态变化时触发该事件 <el-table @sel...

everthing
昨天
20
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部