1. 概述编辑
前端预览报表时,模板会被转为 HTML,这个 HTML 的 head 标签中会引入 FineReport 内置的 JavaScript 文件finereport.js,代码如下:
<script type="text/javascript" src="/webroot/decision/view/report?op=emb&resource=finereport.js"></script>
finereport.js中包含了许多内置的 function 以及一些公有的属性,不管是在模板中还是其他网页中,只要引入了finereport.js,就能够通过 FR.xxx 的形式调用公有的属性与方法。
Web 事件、控件事件、超级链接 JavaScript、决策报表事件中都可以获取到 FR 对象。
2. 示例编辑
2.1 报表中调用FR方法
访问报表时会自动引入finereport.js,因此报表添加 JavaScript 脚本时,可以直接使用 FR.xxx 来调用 FR 方法。
2.1.1 添加按钮
新建普通报表,选中 A1 单元格,给单元格添加一个按钮控件,按钮名字改为测试,如下图所示:
2.1.2 添加事件
选中 A1 单元格,右边属性面板点击控件设置>事件,给按钮添加一个点击事件,如下图所示:
JavaScript 代码如下:
FR.showDialog("Test",600,400,"Hello World")
2.1.3 效果预览
保存报表,点击填报预览,点击测试按钮后,弹出提示对话框,如下图所示:
2.2 网页中调用FR方法
如果需要在自己的网页,如某个 JSP 页面中调用 FR 的方法,需要先在 head 标签引入 finereport.js ,再通过 FR.xxx 来调用 FR 方法。
2.2.1 新建HTML文件
以在网页自定义按钮为例,新建一个 HTML 文件:1.html ,插入如下代码:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<html>
<head>
<title>FineReport Demo</title>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<script type="text/javascript" src="/webroot/decision/view/report?op=emb&resource=finereport.js"></script>
<link rel="stylesheet" type="text/css" href="/webroot/decision/view/report?op=emb&resource=finereport.css&cssVersion=1557882553214">
<script>
function button_onclick(){
FR.showDialog("Test", 600, 400, "Hello World")
}
</script>
<input type="button" value="测试" onclick="javascript:button_onclick();" />
</head>
<body>
</body>
</html>
注:此处需要调用 CSS 弹框样式。
2.2.2 效果预览
1)将 HTML 文件保存到%FR_HOME%\webapps\webroot路径下,如下图所示:
2)打开浏览器,地址栏输入:http://localhost:8075/webroot/1.html,即可访问该 HTML 文件,点击测试按钮后,弹出提示框,如下图所示:
3. 常用方法编辑
方法 | 参数 | 返回值类型 | 说明 |
---|---|---|---|
Ajax | void | Ajax 请求 | |
closeDialog() | void | 关闭对话框 | |
doHyperlinkByGet(url,config,target,feature) |
| void | 超级链接,get 传递 config 参数到 target 中,并在 feature 里面设置窗口属性 |
doHyperlinkByPost(url,config,target,feature) |
| void | 超级链接,post 传递 config 参数,并将结果显示在 target 中,并在 feature 里面设置窗口属性 |
doURLPrint(printurl,isPopUp,config) | void | 打印 | |
$.isArray(object) | Boolean | 是否为数组,是返回 true,否返回 false | |
isEmpty(object) | Boolean | 是否为空,是返回 true,否返回 false | |
jsonDecode(jsonEncode String) | String | 对 jsonEncode 过的字符串进行反编码 | |
jsonEncode(String) | String | 对字符串进行 jsonEncode 编码 | |
showDialog(title, width, height, innerContent) | void | 显示一个对话框 | |
remoteEvaluate(String) | object | 执行 FR 内置公式,返回公式计算的结果。 例如:var a = FR.remoteEvaluate("sum(A1,A2)")表示执行 sum(A1,A2) |
注1:remoteEvaluate(String) 方法不支持 tablename.select 函数。
注2:网页中不支持调用 remoteEvaluate(String) 方法。