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

简介:

很多报表软件可以利用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,如下:

1
<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来调用,如下:

1
2
3
4
5
6
7
8
9
10
11
<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示例:

1
2
3
4
5
6
7
8
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

 

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

1
2
3
4
5
6
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

 

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

1
2
3
4
5
6
FR.ajax({
    url:  "some.jsp" ,
    error:  function (XMLHttpRequest, textStatus, errorThrown){
      alert( this .url);
    }
});

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

 

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

 

successFunction

 

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

1
2
3
4
5
6
FR.ajax({
    url:  "/WebReport/a.html" ,
    success:  function (data, textStatus){
      alert( this .url);
    }
});


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

 

timeoutNumber

 

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

 

ypeString

 

请求方式POSTGET,默认为GET

 

urlString

 

发送请求的地址。

 

 

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



本文转自 雄霸天下啦 51CTO博客,原文链接:http://blog.51cto.com/10549520/1752123,如需转载请自行联系原作者
相关文章
|
5月前
|
Web App开发 前端开发 JavaScript
鸿蒙5开发宝藏案例分享---Web适配一多开发实践
这是一份实用的鸿蒙Web多设备适配开发指南,针对开发者在不同屏幕尺寸下的布局难题提供了解决方案。文章通过三大法宝(相对单位、媒体查询和窗口监听)详细介绍如何实现智能适配,并提供了多个实战案例,如宫格布局、对话框变形和自适应轮播图等。此外,还分享了调试技巧及工具推荐,帮助开发者快速上手并优化性能。最后鼓励读者实践探索,并提示更多官方资源等待发现。
|
6月前
|
人工智能 搜索推荐 IDE
突破网页数据集获取难题:Web Unlocker API 助力 AI 训练与微调数据集全方位解决方案
本文介绍了Web Unlocker API、Web-Scraper和SERP API三大工具,助力解决AI训练与微调数据集获取难题。Web Unlocker API通过智能代理和CAPTCHA绕过技术,高效解锁高防护网站数据;Web-Scraper支持动态内容加载,精准抓取复杂网页信息;SERP API专注搜索引擎结果页数据抓取,适用于SEO分析与市场研究。这些工具大幅降低数据获取成本,提供合规保障,特别适合中小企业使用。粉丝专属体验入口提供2刀额度,助您轻松上手!
301 2
|
7月前
|
关系型数据库 MySQL 数据库
基于Flink CDC 开发,支持Web-UI的实时KingBase 连接器,三大模式无缝切换,效率翻倍!
TIS 是一款基于Web-UI的开源大数据集成工具,通过与人大金仓Kingbase的深度整合,提供高效、灵活的实时数据集成方案。它支持增量数据监听和实时写入,兼容MySQL、PostgreSQL和Oracle模式,无需编写复杂脚本,操作简单直观,特别适合非专业开发人员使用。TIS率先实现了Kingbase CDC连接器的整合,成为业界首个开箱即用的Kingbase CDC数据同步解决方案,助力企业数字化转型。
1223 5
基于Flink CDC 开发,支持Web-UI的实时KingBase 连接器,三大模式无缝切换,效率翻倍!
|
6月前
|
人工智能 运维 安全
网络安全公司推荐:F5荣膺IDC全球Web应用与API防护领导者
网络安全公司推荐:F5荣膺IDC全球Web应用与API防护领导者
128 4
|
9月前
|
人工智能 前端开发 API
Gemini Coder:基于 Google Gemini API 的开源 Web 应用生成工具,支持实时编辑和预览
Gemini Coder 是一款基于 Google Gemini API 的 AI 应用生成工具,支持通过文本描述快速生成代码,并提供实时代码编辑和预览功能,简化开发流程。
472 38
Gemini Coder:基于 Google Gemini API 的开源 Web 应用生成工具,支持实时编辑和预览
|
7月前
|
XML JSON API
Understanding RESTful API and Web Services: Key Differences and Use Cases
在现代软件开发中,RESTful API和Web服务均用于实现系统间通信,但各有特点。RESTful API遵循REST原则,主要使用HTTP/HTTPS协议,数据格式多为JSON或XML,适用于无状态通信;而Web服务包括SOAP和REST,常用于基于网络的API,采用标准化方法如WSDL或OpenAPI。理解两者区别有助于选择适合应用需求的解决方案,构建高效、可扩展的应用程序。
|
7月前
|
机器学习/深度学习 开发框架 API
Python 高级编程与实战:深入理解 Web 开发与 API 设计
在前几篇文章中,我们探讨了 Python 的基础语法、面向对象编程、函数式编程、元编程、性能优化、调试技巧以及数据科学和机器学习。本文将深入探讨 Python 在 Web 开发和 API 设计中的应用,并通过实战项目帮助你掌握这些技术。
|
11月前
|
存储 前端开发 JavaScript
如何在项目中高效地进行 Web 组件化开发
高效地进行 Web 组件化开发需要从多个方面入手,通过明确目标、合理规划、规范开发、加强测试等一系列措施,实现组件的高效管理和利用,从而提高项目的整体开发效率和质量,为用户提供更好的体验。
330 63
|
9月前
|
JavaScript 数据挖掘 BI
WEB 版的报表工具有没有意义?
WEB 版的报表工具有没有意义?如果这个 web 版的报表工具指的是现在的自助报表,也就是 BI、多维分析,那它是有意义的, 而且各厂商们都已经做的挺好,可以让业务人员通过简单的拖拽进行各种数据分析,生成自己想要的报表。如果想把 WEB 制表功能扩大化,想让业务人员把所有报表任务都自己搞定,那就不切实际了,按这个愿望设计出来的工具也就没啥意义了。因为业务人员不可能搞的定中国式复杂报表。
|
10月前
|
Kubernetes 安全 Devops
有效抵御网络应用及API威胁,聊聊F5 BIG-IP Next Web应用防火墙
有效抵御网络应用及API威胁,聊聊F5 BIG-IP Next Web应用防火墙
257 10
有效抵御网络应用及API威胁,聊聊F5 BIG-IP Next Web应用防火墙