1. 问题描述
在报表开发工具FineReport中,若有几张不同的报表,每张报表都有一个共同的项可以选择,比如日期时间。我们希望选择了第一张报表的时间之后,其他报表的默认时间都变为第一张报表选择的时间,此时要如何实现呢?
2. 实现思路
可以利用给session赋值来实现。给第一张报表的参数控件增加通过ajax的url将值传递给后台的servlet的编辑后事件,servlet获取ajax传递的值并将其保存到session中,后面的报表在参数的控件值处通获取session值即可。
3. 实现步骤
3.1 Ajax传值设置
随便打开一张带参数的模版,如打开模版:%FR_HOME%WebReportWEB-INFreportletsdocPrimaryParameterParameter.cpt。
点击参数界面,将控件设置未文本框控件,给文本框控件增加编辑后事件,具体的js如下:1.var str=this.getValue(); //获取当前控件的值
2.FR.ajax({
3. url: "servlet/session?id="+FR.cjkEncode(str), //将值传递给session这个servlet中
});
注:如果想要预览报表的同时将数据也写入到session中,而不需要异步加载,可以再ajax下面加上async:false。
3.2 获取值并保存至Session
新建一个名为session的类,具体的代码如下:1.import javax.servlet.http.HttpSession;
2.im