在JS代码中使用FineReport内置的公式

编辑
  • 文档创建者:yets11
  • 浏览次数:12675次
  • 编辑次数:8次
  • 最近更新:cherishdqy 于 2018-12-06

  • 1、概述

    有时报表设计时涉及到写JS代码,利用JS的来处理有些计算或转换时特别复杂,比如日期格式化、字符串截取替换等等,先来看看利用原生JS将当前日期显示成”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行代码,虽然实现功能了,但是代码多,且没有通用性(需要其他格式,如加上时间的话,代码量会更多),那么在FR中写JS代码有没有简单的办法呢,FR中本身就带了格式日期时间的函数,可不可以在JS中直接调用呢,我想这也是很多报表开发者想知道的,答案当然是有的。

    2、解决办法

    2.1 方法一

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

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

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


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

    2.2 方法二

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

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

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


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

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


    附件列表


    主题: 二次开发
    如果您认为本文档还有待完善,请编辑

    文档内容仅供参考,如果你需要获取更多帮助,付费/准付费客户请咨询帆软技术支持
    关于技术问题,您还可以前往帆软社区,点击顶部搜索框旁边的提问按钮
    若您还有其他非技术类问题,可以联系帆软传说哥(qq:1745114201

    此页面有帮助吗?只是浏览 [ 去社区提问 ]