Posted on 2010-07-16 12:53
FineReport——報表技術領跑者 閱讀(1174)
評論(0) 編輯 收藏 所屬分類:
Java報表技術知識
在報表參數中,可通過添加參數控件的編輯后事件來實現用一個參數控制另一個參數。以下例子是用參數username來對state置數,username為下拉框自定義的幾個名字,state為單選按鈕,1和2。當username有值時,取state的狀態,要是2,則置為1,若為1,則不變;當沒有值時,取state的狀態,要是2,則不變,若為1,則置為2。
1. 連接數據庫FRDemo
2. 設計模板
2.1 新建報表
2.2 定義參數
在菜單欄中選擇報表|報表參數,打開參數定義面板,添加兩個參數state和username,默認值選擇字符串形式,如下圖
2.3 參數設計
打開參數設計界面,按照下圖安排參數的位置

l state控件類型選擇單選按鈕組,數據為自定義的1和2,如圖

l username控件類型為下拉框,數據也為自定義的幾個數據,如圖

2.4 事件編輯
在username的事件編輯中添加編輯后事件,JS代碼如下
var state= this.options.form.getWidgetByName("state");
var username = this.options.form.getWidgetByName("username").getValue();
if (!username){
state.setValue(2);
}else{
state.setValue(1);
}
該段代碼是用來對state參數置數,當username為空時,將state置數為2,當username有值時,將state置數為1,如圖所示

3. 保存并預覽
點擊設計器分頁預覽,當username有值是,state置數為1

當username為空時,state置數為2

注意,state無法通過username置數為,Js里面,state為0,默認返回false
以上例子是獲得控件的實際值。
通過該控件取該控件的顯示值方法是arguments[0],
通過該控件取另一個控件的值方法是
this.options.form.getWidgetByName(“所要獲得顯示值的控件名”).options.items [i].text
另外,一個控件無法對另一個控件的顯示值置數。