FineReport报表工具内置JS的使用之五

来源:互联网 发布:cydia怎样下载软件 编辑:程序博客网 时间:2024/05/16 07:37

参数控件动态显示

在使用FineReport报表工具时,由于业务的需要,很多情况下需要当满足某个条件时,某些查询条件才显示出来,此时参数控件就需要动态的控制其是否可见。

   //通过控件的visible()invisible()属性控制其可视、不可视

   var [Widget] = form.getWidgetByName("[ParaName]"); //通过控件名获取控件

   [Widget].visible(); //设置该控件可见

[Widget].invisible();//设置该控件不可见

实例:

该实例实现效果:当选择日报时,右侧出现一个日期查询控件,选择月报时,则让用户选择年月,例如20083月,选择年报时,即让用户选择年份。

1.     模板设计

      1.1新建报表

1.2添加数据源

新建一个名为ds1的数据库查询,SQL语句:

SELECT equipment,amount,costs,updatetime,equipmentId

FROM EquipmentDetail

where 1=1

${if(type='日报'," and format(updatetime,'yyyy-mm-dd') = '" + date + "'","")}

${if(type='月报'," and month(updatetime) = "+ month + " and year(updatetime) = " + year,"")}

${if(type='年报'," and year(updatetime) = " + year,"")} 

其中设置参数type的默认值日报,data的默认值是字符串2009-01-13

1.3模板设计

       模板样式如下

 

      

2.4绑定数据列

按照下表进行数据列绑定

 

 

2.5参数设计

       2.5.1打开参数设计界面,参数界面布局如下

 

          

             2.5.2控件设置

l        type控件设置

右击type控件,选择控件设置,打开控件设置面板,控件类型为下拉框,控件名选择type,自定义数据,如下图所示

 

      

l        date控件设置

右击date的控件,选择控件设置,打开控件设置面板,控件类型为日期,控件名选择date,自定义数据,如下图所示

  

l        year控件设置

右击year的控件,选择控件设置,打开控件设置面板,控件类型为下拉框,控件名选择year,使用公式,dyear控件是由type的类型来决定他是否需要显示的,且我们默认的类型为日报,因此默认设置它为不可见,如下图所示

 

l        month控件设置

右击month的控件,选择控件设置,打开控件设置面板,控件类型为下拉框,控件名选择month,自定义数据,并设为不可见,如下图所示

   

2.     事件编辑

右击type控件,选择控件设置,打开控件设置面板,添加编辑后事件,如下图所示:

 

      

   function fun(){}中添加如下代码:

   var form = this.options.form;

var DateWidget = form.getWidgetByName("date");

var YearWidget = form.getWidgetByName("year");

var MonthWidget = form.getWidgetByName("month");

var value = this.getValue();

if(value == "日报"){

       DateWidget.visible();

       YearWidget.invisible();

       MonthWidget.invisible();

}else if(value == "月报"){

       DateWidget.invisible();

       YearWidget.visible();

       MonthWidget.visible();

}else if(value == "年报"){

       DateWidget.invisible();

       YearWidget.visible();

       MonthWidget.invisible();

}else{

       DateWidget.invisible();

       YearWidget.invisible();

       MonthWidget.invisible();

}

说明:此段代码的作用是选择日报,那么在其下方出现一个日期选择框;选择月报时,即让用户选择年月,例如20083月;年报与月报同理,即让用户选择年份。

3.     保存并预览

默认为日报,只显示出日期控件,预览效果如图

      

       

      当选择月报时,右边弹出月份和年份下拉框,预览效果如图

      

      

 

      当选择年报时,右边弹出年份下拉框,预览效果如图

 

 

文章转自:http://ajavareport.cn/archives/450