历史版本27 :前端开发指南 返回文档
编辑时间: 内容长度:图片数:目录数: 修改原因:

目录:

1. 概述编辑

FineReport 制作的报表解析后最终成为一个 HTML 页面,即每一份模板在浏览器端预览时都将对应一份 HTML 文档。FineReport 报表前端采用 jQuery 框架,jQuery 是一个快速简洁的 JavaScript 库,使用户能方便地处理 HTML 实现交互效果,因此用户可以使用 jQuery 框架的所有方法对报表前端进行二次开发;另外 FineReport 还提供了前端 JS API 供用户开发使用。

本文将介绍在 FineReport 中如何进行前端二次开发,用户了解后就可以通过 JavaScript 或 CSS 来操作报表的 HTML 内容,从而达到修改报表内容或添加交互特效的目的。

2. 预备知识编辑

在进行前端二次开发前,用户需要对下面的知识有基本的了解,知道 JavaScript 是如何与 HTML 和 CSS 一起工作的。

HTML 定义了网页的内容,CSS 描述了网页的布局,JavaScript 控制了网页的行为。

  • HTML 是用来描述网页的一种语言,Web浏览器(如谷歌浏览器,Internet Explorer,Firefox,Safari)读取 HTML 文件后将其作为网页显示。


  • JavaScript 是一种编程语言,可以控制网页的行为,可以修改网页内容和添加交互效果。代码可以直接插入 HTML 页面,插入后可由浏览器执行。

  • CSS 用于定义网页的样式,样式即如何显示 HTML 元素,如定义 HTML 中的标签元素的颜色、背景等。

更多详细内容可以查看 JavaScript 、HTML 、CSS 的学习网页。为了您更好的开发报表,建议您提前学习一下相关内容!

3. 功能介绍编辑

每一份模板在浏览器端都对应一份 HTML 文档,作为一份 HTML 文档,就可以通过 JavaScript 或 CSS 来对其进行修改。

3.1 JavaScript 

3.1.1 添加事件

JavaScript 对用户的输入响应,是以事件驱动的方式进行的。所谓事件驱动,就是指在主页中执行了某种操作所产生的动作,如点击鼠标、移动窗口、选择菜单等,当动作发生后,会引起相应的事件响应。

FineReport 提供了「事件」功能和对应的 「JavaScript 脚本」响应方式 。如下图所示:

制作模板时,用户可以在报表模板中添加 JS 事件。可以直接将代码写在模板中,也可以创建一个 JS 文件后,放在工程目录下,在模板中引用此文件。如何使用可参考:JavaScript脚本

当报表转为 HTML 页面时会将这些事件代码添加到 HTML 的头部 head,当事件被触发时代码内容将会被执行,报表就会显示 JavaScript 代码效果。

如下图所示,在设计器中给对应的模板添加了一个「填报成功」事件,事件内容为设置「打印」和「输出按钮不可用。


预览报表,填报提交成功后,工具栏「打印」和「输出」功能不可用。如下图所示:

20180813160001_6147.gif

3.1.2 引用脚本

制作模板时,可以引用 JavaScript 脚本文件。这样,相同的功能就可以用同一个文件,提高代码的可用性。除 JavaScript脚本 编辑框中支持引用 JavaScript 脚本文件外,在菜单栏也有专门引用 JavaScript 的入口。如下图所示:


  • 若 JS 文件只用于单个模板,可以通过菜单栏点击「模板>模板 Web 属性>引用 JavaScript 」引用。

  • 若 JS 文件用于报表工程下所有模板,可通过菜单栏点击「服务器>服务器配置>引用 JavaScript」统一引用。

如何使用可参考 模板Web属性 对应章节。

3.1.3 自定义页面中使用

以上两节主要讲解用户如何在模板中添加 JavaScript 代码。开发报表时,用户也可以在自定义页面中调用 FineReport 提供的 JS 接口。

在自定义页面中,通过获取 iframe 中的报表再使用 FineReport 的 JS 方法。

  • 如报表嵌入在 iframe 的 ID为"reportFrame"时,调用报表的跳转到上一页接口,代码如下:

document.getElementById('reportFrame').contentWindow._g().gotoPreviousPage();
  • 如引入 FineReport 的 JS 文件再使用 FineReport 的 JS 方法。

注:若该页面中引入了其他版本的 jQuery.js,可能会有 JS 冲突,因此建议您通过获取 iframe 中的报表再使用 FineReport 的 JS 方法。

<script type="text/javascript" src="/webroot/decision/view/report?op=resource&amp;resource=/com/fr/web/jquery.js"></script> 
<script type="text/javascript" src="/webroot/decision/view/report?op=emb&amp;resource=finereport.js"></script> 
<script type="text/javascript">
    function doPrint(){ 
        var url="http://localhost:8075/webroot/decision/view/report?viewlet=GettingStarted.cpt";//端口和ip根据具体情况设定 
        FR.doURLFlashPrint(url); 
    } 
</script>

3.2 CSS

3.2.1 添加事件

通过添加事件的方式修改 CSS 样式。修改 CSS 样式也通过 JavaScript 修改,直接使用 JavaScript脚本 添加即可。

如下图所示,在设计器中给日期控件添加了一个「初始化后」事件,通过修改日期控件的 CSS 来修改日期控件的字体样式。

修改后效果为:

3.2.2 引用脚本

制作模板时,可以引用 CSS 脚本文件。这样,相同的功能就可以用同一个文件,提高代码的可用性。在菜单栏有专门引用 CSS 的入口。如下图所示:

  • 若 CSS 文件只用于单个模板,可以通过菜单栏点击「模板>模板 Web 属性>引用 Css 」引用。

  • 若 CSS 文件用于报表工程下所有模板,可通过菜单栏点击「服务器>服务器配置>引用 Css」 统一引用 。

如何使用可参考 模板Web属性 对应章节。