1.FR的js。
作为一款BS产品,browser端的JavaScript是必不可少的。
FR中的js是已经调用了finereport.js的。
大家知道,预览报表时,报表servlet会将cpt模板转为html,在这个html的head头部中会引入FR的js,这个finereport.js中包含了许多内置的function以及一些公有的属性,不管在模板中还是其他网页中,只要引入了finereport.js,就能够通过FR.xxx的形式调用公有的属性与方法。上面是盗用FR官方文档上的一段话。自己写的web想用FR现成的东西的话需要先引用finereport.js。
2.区别。
js大致有两种,页面相关状态的事件还有就是按钮相关的事件。按钮有三类,一类是工具栏的,一类是参数面板或者表单模式的,还有一类是填报页面的。不同按钮的某些语句稍微有些区别的。
表单是form,填报是write,以获取控件并给控件赋值为例
this.options.write.getWidgetByName("p1").setValue("aaa");//填报
this.options.form.getWidgetByName("p1").setValue("aaa");//表单,参数界面
7.0加了contentPane.getWidgetByName("p1").setValue("aaa");//对于工具栏的按钮,和单元格中的不在同一个框架或者容器,不能简单套用
js取值可以通过控件或者单元格,6.5的参数面板也是单元格的形式,这其实有点误导的地方在于,不能通过参数面板的单元格获取东西的,参数面板其实是没有单元格的,写了后会产生逻辑错误,调用了报表主体中的单元格,我们都知道有参数面板的话,参数面板是在报表主体之前加载的,甚至是在报表的加载起始事件之前,所以这样就有可能会调用还没产生的报表主体单元格。
3.js编辑框调用公式。
公式放在框架"${}"中。
比如var v1="${len('sdf')}";那么v1就为3.
这个跟数据集定义和公式交互可以比较一下。js中""下面的就是字符串,sql其实就是字符串,sql定义的地方是${}里面的是公式,于是推理下JS编辑框中"${}"就应该是公式。
但是这里要注意下,不能就这样简单类比了,毕竟处理方式上还是有区别的,sql那边是把公式参数什么的都一股脑的在报表中拼接完了,再一起送到数据库来跑,js却不能这么简单拼接。
作为一款BS产品,browser端的JavaScript是必不可少的。
FR中的js是已经调用了finereport.js的。
大家知道,预览报表时,报表servlet会将cpt模板转为html,在这个html的head头部中会引入FR的js,这个finereport.js中包含了许多内置的function以及一些公有的属性,不管在模板中还是其他网页中,只要引入了finereport.js,就能够通过FR.xxx的形式调用公有的属性与方法。上面是盗用FR官方文档上的一段话。自己写的web想用FR现成的东西的话需要先引用finereport.js。
2.区别。
js大致有两种,页面相关状态的事件还有就是按钮相关的事件。按钮有三类,一类是工具栏的,一类是参数面板或者表单模式的,还有一类是填报页面的。不同按钮的某些语句稍微有些区别的。
表单是form,填报是write,以获取控件并给控件赋值为例
this.options.write.getWidgetByName("p1").setValue("aaa");//填报
this.options.form.getWidgetByName("p1").setValue("aaa");//表单,参数界面
7.0加了contentPane.getWidgetByName("p1").setValue("aaa");//对于工具栏的按钮,和单元格中的不在同一个框架或者容器,不能简单套用
js取值可以通过控件或者单元格,6.5的参数面板也是单元格的形式,这其实有点误导的地方在于,不能通过参数面板的单元格获取东西的,参数面板其实是没有单元格的,写了后会产生逻辑错误,调用了报表主体中的单元格,我们都知道有参数面板的话,参数面板是在报表主体之前加载的,甚至是在报表的加载起始事件之前,所以这样就有可能会调用还没产生的报表主体单元格。
3.js编辑框调用公式。
公式放在框架"${}"中。
比如var v1="${len('sdf')}";那么v1就为3.
这个跟数据集定义和公式交互可以比较一下。js中""下面的就是字符串,sql其实就是字符串,sql定义的地方是${}里面的是公式,于是推理下JS编辑框中"${}"就应该是公式。
但是这里要注意下,不能就这样简单类比了,毕竟处理方式上还是有区别的,sql那边是把公式参数什么的都一股脑的在报表中拼接完了,再一起送到数据库来跑,js却不能这么简单拼接。