帆软参数控件的层级联动

http://www.finereport.com/knowledge/design/dynamic-para.html

 

 

由于业务的需要,很多情况下需要在web报表中实现这样的效果:当满足某个条件时,某些查询条件才显示出来,如下图所示,选择年报,显示年的下拉框控件;选择月报,显示年和月的下拉框控件;选择日报,显示日期控件:
帆软参数控件的层级联动
帆软参数控件的层级联动
帆软参数控件的层级联动
下面便来看一下在Web报表软件FineReport中如何实现上述效果。
//通过报表控件的visible()、invisible()属性控制其可视与不可视
var [Widget] = form.getWidgetByName(“[ParaName]”); //通过控件名获取控件
[Widget].visible(); //设置该控件可见
[Widget].invisible(); //设置该控件不可见
具体步骤如下:
1. 打开报表模板
打开模板:
%FR_HOME%WebReportWEB-INFreportletsdocParameterDynamicSQLDynamicSQL.cpt
2. 修改报表数据集
将数据集修改为:
SELECT * FROM 订单 where 1=1 ${if(type==”日报”,”and format(订购日期,’yyyy-mm-dd’) = ‘” + date + “‘”,if(type==”月报”,”and month(订购日期) = “+ month + ” and year(订购日期) = ” + year ,”and year(订购日期) = ” + year ))}
给参数type设置默认值为日报,参数date设置默认值的类型为字符串型值为2010-01-03。
3. 报表表样修改
将表样修改成如下样式:
帆软参数控件的层级联动
给A3设置形态,自定义数据,实际值与对应的显示值分别为:日报,日期;月报,年月;年报,年份。
在B3单元格中增加如下公式:=if(type==”日报”,$date,if(type==”月报”,$year+”.”+$month,$year))
4. 报表参数界面设置
将参数界面设置成如下样式:
帆软参数控件的层级联动
设置参数type的控件类型为下拉框,自定义值实际值与显示值都为日报,月报,年报。
设置参数year的控件类型为下拉框,自定义值显示值与实际值都为2010,2011。
设置参数month的控件类型也为下拉框,其值为公式,在实际值出填写公式=range(1,6)即可。
设置参数date的控件类型为日期,返回值类型为默认的字符串型。
5. JS事件
给参数type的下拉框控件增加编辑后事件,具体的JS代码如下:
帆软参数控件的层级联动
注:此段代码判断type参数的值,若是日报,则只显示date控件,若是月报,则显示year和month控件,若是年报,则只显示year控件。
6. 保存报表模板
点击分页预览,效果如上图。