步骤
1、打开模板%FR_HOME%WebReport\WEB-INF\reportlets\demo\parameter\number.cpt
切换至参数界面,在左上角的设置按钮中,去掉显示参数窗体和点击查询前不显示报表内容两个选项前的勾
2、在点击查询按钮时需要先获取控件值,并且需要进行cjkEncode,因此查询按钮type使用button,不要使用submit(直接触发action)。
3、点击“查询”按钮时,触发autoSubmit(),在该方法中通过js获取表单控件的值,拼接出完整的报表访问路径,并对最终的url进行cjkEncode编码。
将最终的报表url赋给form的action,并触发提交,返回的报表结果就会显示在指定的iframe中。
function autoSubmit() {
var num = document.getElementById('num').value; //获取文本控件的值
var row = document.getElementById('row').value; //获取下拉框控件的值
//拼接出最终报表访问路径,并对完整的路径进行编码转换,防止乱码问题
var reportURL = cjkEncode("../ReportServer?reportlet=/demo/parameter/number.cpt¶=" + num + "&row=" + row);
document.paraForm.action = reportURL; //通过form的name获取表单,并将报表访问路径赋给表单的action
document.paraForm.submit(); //触发表单提交事件
}
4、完整代码
在finereport可以使用自定义的方式实现条件表单界面,在实际系统中使用的框架不同,控件的种类和定义方法也不同,我们以html网页为例简单说明,最终效果如下:先打开模板,然后切换至参数界面,在左上角的设置按钮中