以文本方式查看主题

-  中文XML论坛 - 专业的XML技术讨论区  (http://bbs.xml.org.cn/index.asp)
--  『 Java/Eclipse 』  (http://bbs.xml.org.cn/list.asp?boardid=41)
----  FineReport报表工具内置JS的使用之五[转帖]  (http://bbs.xml.org.cn/dispbbs.asp?boardid=41&rootid=&id=86637)


--  作者:bestreport
--  发布时间:9/5/2010 4:51:00 PM

--  FineReport报表工具内置JS的使用之五[转帖]
文章转自:http://ajavareport.cn/archives/450
参数控件动态显示
在使用FineReport[URL=http://www.finereport.com/]报表工具[/URL]时,由于业务的需要,很多情况下需要当满足某个条件时,某些查询条件才显示出来,此时参数控件就需要动态的控制其是否可见。
 //通过控件的visible()、invisible()属性控制其可视、不可视
 var [Widget] = form.getWidgetByName("[ParaName]"); //通过控件名获取控件
    [Widget].visible(); //设置该控件可见
[Widget].invisible(); //设置该控件不可见
实例:
该实例实现效果:当选择日报时,右侧出现一个日期查询控件,选择月报时,则让用户选择年月,例如2008年3月,选择年报时,即让用户选择年份。
1. 模板设计
 1.1 新建[URL=http://www.finereport.com/]报表[/URL]
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 控件设置
 type控件设置
右击type控件,选择控件设置,打开控件设置面板,控件类型为下拉框,控件名选择type,自定义数据,如下图所示

按此在新窗口浏览图片
 
 date控件设置
右击date的控件,选择控件设置,打开控件设置面板,控件类型为日期,控件名选择date,自定义数据,如下图所示
 
按此在新窗口浏览图片
 year控件设置
右击year的控件,选择控件设置,打开控件设置面板,控件类型为下拉框,控件名选择year,使用公式,dyear控件是由type的类型来决定他是否需要显示的,且我们默认的类型为日报,因此默认设置它为不可见,如下图所示

按此在新窗口浏览图片

 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();
}
说明:此段代码的作用是选择日报,那么在其下方出现一个日期选择框;选择月报时,即让用户选择年月,例如2008年3月;年报与月报同理,即让用户选择年份。
3. 保存并预览
默认为日报,只显示出日期控件,预览效果如图
 
按此在新窗口浏览图片
 
 当选择月报时,右边弹出月份和年份下拉框,预览效果如图
 
 
按此在新窗口浏览图片

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

按此在新窗口浏览图片


W 3 C h i n a ( since 2003 ) 旗 下 站 点
苏ICP备05006046号《全国人大常委会关于维护互联网安全的决定》《计算机信息网络国际联网安全保护管理办法》
13,593.750ms