1.FineReport的js。
作为一款BS产品,browser端的JavaScript是必不可少的。
FineReport中的js是已经调用了finereport.js的。
大家知道,预览报表时,报表servlet会将cpt模板转为html,在这个html的head头部中会引入FineReport的js,这个finereport.js中包含了许多内置的function以及一些公有的属性,不管在模板中还是其他网页中,只要引入了finereport.js,就能够通过FR.xxx的形式调用公有的属性与方法。上面是盗用FR官方文档上的一段话。自己写的web想用FineReport现成的东西的话需要先引用finereport.js。
2.区别。
js大致有两种,页面相关状态的事件还有就是按钮相关的事件。按钮有三类,一类是工具栏的,一类是参数面板或者表单模式的,还有一类是填报页面的。不同按钮的某些语句稍微有些区别的。
表单是form,填报是write,以获取控件并给控件赋值为例
this.options.write.getWidgetByName("p1").setValue("aaa");//填报
this.options.form.getWidgetByName("p1").setValue("aaa");//表单,参数界面
3.js编辑框调用公式。
公式放在框架"${}"中。
比如var v1="${len('sdf')}";那么v1就为3.
这个跟数据集定义和公式交互可以比较一下。js中""下面的就是字符串,sql其实就是字符串,sql定义的地方是${}里面的是公式,于是推理下JS编辑框中"${}"就应该是公式。
但是这里要注意下,不能就这样简单类比了,毕竟处理方式上还是有区别的,sql那边是把公式参数什么的都一股脑的在报表中拼接完了,再一起送到数据库来跑,js却不能这么简单拼接。
这边就谈不上什么语法特点了,实际应用中也不会在url中直接写,大多是嵌入或者跳转的时候用。简单说下url中的参数吧。
首先是op参数。可以参看文档。
报表在默认情况下的预览方式是分页预览,当op参数为write时为填报预览,op=view是数据分析,op=form是表单模式
op=fs,数据决策系统
op=fr_platform,报表平台管理
op=excel_submit,后台excel导入填报
op=auth_login,登录的中间页面,需要fr_username和fr_password参数
op=fr_adhoc&cmd=ac_init_analysispane&viewname=数据集名字,单独打开BS设计器
其他的参数:
__bypagesize__ :控制是否分页
__pi__ :是否显示参数界面
__filename__ :控制导出文件名,没有的话默认用模板名