參數控件動態顯示
在使用FineReport報表軟件時,由于業務的需要,很多情況下需要當滿足某個條件時,某些查詢條件才顯示出來,此時參數控件就需要動態的控制其是否可見。
//通過控件的visible()、invisible()屬性控制其可視、不可視
var [Widget] = form.getWidgetByName("[ParaName]"); //通過控件名獲取控件
[Widget].visible(); //設置該控件可見
[Widget].invisible(); //設置該控件不可見
實例:
該實例實現效果:當選擇日報時,右側出現一個日期查詢控件,選擇月報時,則讓用戶選擇年月,例如2008年3月,選擇年報時,即讓用戶選擇年份。
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控件,選擇控件設置,打開控件設置面板,添加編輯后事件,如下圖所示:
http://www.finereport.com/forumimages/e197.png
在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. 保存并預覽
默認為日報,只顯示出日期控件,預覽效果如圖
當選擇月報時,右邊彈出月份和年份下拉框,預覽效果如圖

當選擇年報時,右邊彈出年份下拉框,預覽效果如圖

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