历史版本9 :在JS中使用FR公式 返回文档
编辑时间: 内容长度:图片数:目录数: 修改原因:


目录:

1、概述编辑


有时报表设计时涉及到写JavaScript代码,利用JavaScript的来处理有些计算或转换时特别复杂,比如日期格式化、字符串截取替换等等,先来看看利用原生JavaScript将当前日期显示成”2017年02月24日“ 这种格式时需要写哪些代码:

var da = new Date();
var year = da.getFullYear()+'年';
var month = da.getMonth()+1+'月';
var day = da.getDate()+'日';
if (month.length < 3) month = '0' + month;
if (day.length < 3) day = '0' + day;
var rq=year+month+day; 
alert(rq);

效果如下:


主体部分用了7行代码,虽然实现功能了,但是代码多,且没有通用性(需要其他格式,如加上时间的话,代码量会更多),那么在FineReport中写JavaScript代码有没有简单的办法呢,FR中本身就带了格式日期时间的函数,可不可以在JavaScript中直接调用呢,我想这也是很多报表开发者想知道的,答案当然是有的。


2、解决办法编辑

2.1 方法一

在JS中使用帆软自带的公式其实很简单,直接用"${=公式}"即可,同样看上面这个需求,我们看一下在FR中需要写哪些代码:


比如我们需要点击按钮显示当前日期,在按钮点击事件中写JavaScript代码:

var rq='${=today()}'; 
alert(rq);

222

这样既可实现显示当前日期,可以看到,在FineReport中只需要写一行代码,即可完成跟原生JavaScript中一大堆代码同样的功能。


2.2 方法二


利用FR提供的远程公式FR.remoteEvaluate('=公式')来执行函数,从而利用我们在报表中常用的公式。

同样是这个需求,我们可以看下这种写法,在按钮点击事件中写JavaScript代码:

var rq=FR.remoteEvaluate('=format(today(),"yyyy年MM月dd日")');
alert(rq);

222

这样也可实现显示当前日期,利用这两种方法,可以很方便地将JavaScript代码与FineReport中的公式进行混用,极大地提高我们代码开发效率。

注:移动端APP 9.0及之后的版本不再支持FR.remoteEvaluate(formula)这个JavaScript。