控件示例
控件值(實際值和顯示值)
控件默認值
參數控件默認值
填報控件默認值
使用公式給參數賦默認初始值
下拉框動態初始值
單選按鈕組設置默認值
下拉樹默認值設置
復選框組設置默認值
下拉(復選)框示例
下拉框不選項可選擇全部值
下拉復選框選中個數
下拉框(下拉復選框)的快速查詢
下拉框顯示多列
下拉框數據量大時的解決方案
下拉框動態數據來源
下拉框填報完成之后顯示為實際值
下拉復選框的控件示例
下拉復選框默認選中全部值
下拉復選框名稱重復導致返回值錯誤
點擊任意位置展現下拉框列表
下拉樹示例
下拉樹控件默認全選
下拉樹控件極速分層構建示例
下拉樹控件自動構建示例
下拉樹控件分層構建示例
多選下拉樹實現不同級別之間的查詢
下拉樹實現數據集過濾
填報頁面下拉樹控件返回所選層級值
下拉樹控件FAQ
按鈕控件示例
文件控件示例
文件控件獲取文件名、類型和大小
上傳下載文件插件
單選按鈕組控制實現是否顯示全部
視圖樹超鏈
控件值(實際值和顯示值)
1. 描述
在我們平時對控件的使用中,避免不了需要對控件值的引用,那么在引用控件的值時,會涉及控件實際值和顯示值,現在具體划分哪些控件有實際值與顯示值之分,以及控件值的使用!
2. 控件(值)對比
控件
|
實際值
|
顯示值
|
實際值顯示值是否一致
|
文本控件
|
--
|
--
|
是
|
文本域控件
|
--
|
--
|
是
|
數字控件
|
--
|
--
|
是
|
密碼控件
|
--
|
--
|
是
|
按鈕控件
|
--
|
--
|
是
|
復選框控件
|
--
|
--
|
是
|
單選按鈕組控件
|
有
|
有
|
否
|
復選框組控件
|
有
|
有
|
否
|
下拉框控件
|
有
|
有
|
否
|
下拉復選控制件
|
有
|
有
|
否
|
日期控件
|
--
|
--
|
是
|
文件控件
|
--
|
--
|
是
|
列表控件
|
有
|
有
|
否
|
網頁框
|
--
|
--
|
是
|
下拉樹
|
有
|
有
|
否
|
視圖樹
|
有
|
有
|
否
|
注:對於文本框這類控件來說,實際值和顯示值是沒有區別的,但是對於下拉框這種能設置數據字典來定義實際值和顯示值的控件就不一樣了。
3. 示例一
我們先演示一下控件顯示值和實際值的獲取方法及使用區別!
過程:在參數面板新建:下拉框控件(t1)、單選按鈕組控件(t2)、復選框控件(t3)、下拉復選框控件(t4)、文本控件(t5)及預定義按鈕(提交)
注:上述控件全部獨立,不存在聯動!
3.1 下拉框控件(t1)
1)選中t1按鈕,設置字典:

2)在預定義按鈕中設置點擊事件,如下:

js代碼:
- var Widget = this.options.form.getWidgetByName("t1"); //在參數界面獲取控件的方法,先獲取決策報表,再通過控件名稱來獲取控件
- var value_1 =Widget.getValue(); //獲取控件實際值
- alert('我的實際值是:'+value_1); //彈出控件實際值
- var value_2 =Widget.getText(); //獲取控件顯示值
- alert('我的顯示值是:'+value_2); //彈出控件顯示值
3)效果預覽:(實際值和顯示值不同)

同理設置:單選按鈕組控件(t2)、復選框控件(t3)、下拉復選框控件(t4)得到的結果一樣:(實際值和顯示值不同)
3.2 文本控件(t5)
文本框控件就不一樣了,它的結果表明:(實際值和顯示值相同)

結論:目前除了下拉框控件、單選按鈕組控件、復選框控件、下拉復選框控件、列表控件、下拉樹、視圖樹,這種能設置數據字典來定義實際值和顯示值的控件[實際值和顯示值不同]外,其他控件實際值和顯示值均相同!
具體請參考上面的控件對比圖表
4. 示例二
如果在單元格中獲取控件值,獲取到的是控件的顯示值還是實際值!
過程:我們分別在報表的B3、C3、D3、E3、F3單元格獲取參數控件t1、t2、t3、t4、t5的值!
1)設置方法:

2)效果預覽:

結論:參數界面的控件傳遞到后台或在單元格直接獲取,都是控件的[實際值]。
5. 實際值顯示值多對一
就如上述所展示的那樣,通常實際值和顯示值是一一對應的關系。但是也會有不同實際值對應相同顯示值的情況,就比如企業名稱可以相同但ID是唯一的,ID與名稱就構成了多對一的關系。
10.0統一控件在多個實際值對應相同顯示值情況下的處理邏輯:
1)直接在控件里選值時,無論是參數查詢還是新填報,均支持實際值和顯示多對一的情況,也即由所選的顯示值得到其對應的實際值。
2)通過傳參賦予控件值時,如果傳參是實際值,則和直接在控件里選值的邏輯保持一致;如果傳遞的是顯示值,則控件默認選中第一個顯示值。
下面進行舉例說明。
5.1 參數查詢
如圖所示,新增一個內置數據集:

在參數設置界面添加下拉框、下拉復選框、單選按鈕組、復選按鈕組、視圖樹以及查詢按鈕,如下圖所示:

注意在添加控件時,依次給控件修改名稱,這里按順序修改為:a、b、c、d、e。
就拿下拉框控件a舉例:

其余控件不多做說明,修改完名稱的控件如下圖所示:

注:formSubmit0為查詢按鈕控件。
接着給各個控件增加數據字典設置。
依然以下拉框控件a舉例說明,如下圖所示:數據字典的類型設置為數據查詢;實際值為:學號;顯示值為:姓名。

下拉復選框、單選按鈕組、復選按鈕組均如上圖下拉框一樣設置。
視圖樹則稍有不同:
1)注意首先將【多選】勾選上;
2)設置數據字典:構建方式選擇【極速分層構建】;數據集選擇新建好的內置數據集;實際值選擇【學號】;顯示值選擇【姓名】。如下圖所示:

參數界面設置完成,接着如圖設置報表主體:

分別在A2-E2單元格內插入公式,輸入對應的【$控件名】。
預覽效果如下:
實際值顯示值多對一的情況下,選擇同樣的顯示值依然可以准確得出不同的實際值。

此外,可手動輸入值的控件(比如下拉復選框),手動輸入了多個相同的顯示值,則跟傳參一樣控件只選中第一個顯示值,如下圖所示:

5.2 新填報預覽
下拉框、下拉復選框、單選按鈕、復選框組、視圖樹控件編輯前后均顯示顯示值,如下圖所示:

注:填報預覽下編輯時展示顯示值,結束后展示實際值,必須借助單元格的形態設置才能實現和新填報一樣的效果。具體可以參考
下拉框填報完成之后顯示為實際值。
5.3 傳參賦予控件值
就如上面說明的那樣:通過傳參賦予控件值時,如果傳參是實際值,則和直接在控件里選值的邏輯保持一致;如果傳遞的是顯示值,則控件默認選中第一個顯示值。
我們依然需要使用剛才5.1建立的參數查詢報表。
然后再新建一個報表,設計報表主體如下圖所示:

單元格內寫入的內容來源如下圖所示:

然后給A1-F1單元格添加超級鏈接至5.1使用的參數查詢報表,如下圖所示:


A1-E1添加超級鏈接的設置均如上圖所示,沒有任何不同。故在此不多做贅述。
注:設置好A1單元格超鏈接之后可以直接復制A1單元格至B1-F1中,再修改單元格內容為“2-5、趙一”即可。
保存模板,預覽。預覽效果如下:

可以看到傳遞的是顯示值“趙一”時,控件默認選中第一個顯示值。
控件默認值
1. 描述
在使用控件的時候,您可能需要對控件賦初值,即進行默認值處理
控件根據使用方式不同可分為填報控件和參數控件,下面分別介紹他們的默認值賦值方式。
2. 默認值分類
控件默認值有多種賦值方法:
1)url直接傳值:在web端打開模板的時候,直接在url后面附上與控件綁定的參數的值,或者FS里掛載模板時設置的參數;
2)控件定義的初始值:直接在控件的屬性面板中為控件賦的初始值;
3)參數定義初始值:定義
模板參數的時候賦的初始值,參數與控件進行綁定,即為控件初始值;
4)數據集參數初始值:在數據集中定義的參數賦的初始值。
注:控件默認值有這么幾種賦值方法,有時候,我們會同時使用到以上幾種方法,故其優先級為:url傳值>控件定義初始值>參數定義初始值>數據集參數初始值
參數控件默認值
1. 描述
如下圖參數界面,我們常常希望點擊
查詢按鈕前能夠根據參數界面上的默認值來顯示報表內容。
您所看到這個默認值其實是參數控件的控件值。

2. 參數控件默認值的來源
如上圖所示參數界面,如何設置參數控件的初始值呢?有以下三種方式:
2.1 定義參數時設置參數默認值
然后再定義參數界面,參數控件會自動獲取參數默認值為控件的默認初始值
如定義模板參數p1時,設置默認值為“華東”,定義參數界面時,p1參數控件的控件值默認為“華東”,數據集參數同理:


注:必須要設置參數默認值在先,定義參數控件在后,初始控件值才是參數默認值,若控件已經定義好,再修改參數默認值,此時控件值不會改變,即參數界面上的初始值不會改變。
因此,若想修改參數界面的默認值,直接修改參數控件的控件值即可。
2.2 定義參數時不設置默認值
定義參數界面的時候,在參數控件的控件值屬性里面設置默認值。
如定義模板參數p1,不設置默認值,定義參數界面之后,在參數界面選中參數控件,在控件的屬性表>高級>控件值處進行設置,數據集參數同理

其中,參數控件的控件值有三種表現類型,字符串,綁定字段以及公式。常用的是字符串和公式,公式的使用詳情請查看
使用公式給參數賦默認初始值。
2.3 在訪問報表時
url后面跟上參數的初始值,參數界面即會顯示url中的值
如訪問報表http://localhost:8075/webroot/decision/view/report?viewlet=GettingStarted.cpt&地區=華北,參數界面上的控件值即為url中的值:

填報控件默認值
1. 描述
如下圖界面,我們常常希望填報界面進行填報前,控件中已經有初值。
這個初值其實就是填報控件的默認值。

2. 填報控件默認值的來源
如上圖填報界面所示,如何設置填報控件的默認值呢?
不同於參數控件的默認值,填報控件默認值只有一種方法進行設置,即在控件所在單元格中輸入默認值。

點擊填報預覽,則可以看到控件中已經有初始值,如上圖所示。
使用公式給參數賦默認初始值
1. 描述
一般參數默認值都是固定的,但有時也需要動態的顯示默認值,比如日期參數默認顯示當前日期,甚至是需要根據當前日期計算出當前月的第一天和最后一天。
注:只有在定義參數默認值的時候公式有效,若在參數查詢界面輸入公式是無效的。
2. 思路
在定義默認值的時候可以使用公式來實現動態計算出默認值。
3. 示例
開始日期為當前月的第一天、結束日期為當前月的最后一天
3.1 描述
如當前日期為2018-08-01,則參數界面顯示為下圖效果:

所對應的參數界面如下:

3.2 開始日期設置
在屬性表>高級>控件值處選擇公式,在公式定義對話框,使用公式DATEINMONTH(TODAY(),1)表示當月的第一天,如圖所示:

公式中TODAY()表示獲取當前時間,DATEINMONTH(TODAY(),1)表示獲取當前月的第一天。
3.3 結束日期設置
同樣在屬性表>高級>控件值處選擇公式,在公式定義對話框,使用公式DATEINMONTH(TODAY(),-1)表示當月的最后一天,如圖所示:

公式中TODAY()表示獲取當前時間,DATEINMONTH(TODAY(),-1)表示獲取當月的最后一天。
至此動態顯示默認值便制作完畢了,保存進行分頁預覽就可以看到上圖效果。
下拉框動態初始值
1. 描述
在參數控件使用過程中,是可以給控件
設置初始值的,一般初始值是固定的,但是數據庫中的數據可能是隨時變化的,若是固定的就無法滿足動態變化了。例如如何實現初始值是下拉框中數據的最大值,如下圖所示:

2. 思路
在控件所在單元格中,使用報表中的sql函數,並且使用sql語句中的聚合函數來獲取默認值。
3. 示例
3.1 定義參數
點擊模板>模板參數,增加一個參數,參數名設置為p1。
3.2 下拉框設置
點擊參數設計界面,使用默認的參數界面,設置p1參數的控件類型選擇下拉框,下拉框數據選擇數據庫表,數據庫選擇FRDemo,表選擇銷售總額,實際值與顯示值都選擇銷售總額所在的數據列。
3.3 下拉框初始值設置
在屬性表>高級>控件值中選擇公式,並在公式中輸入sql("FRDemo","select max(銷售總額) from 銷售總額",1,1),目的是通過sql語句從FRDemo數據庫中獲得銷售總額表中的最多銷售總額的數據。
點擊分頁預覽即可查看效果。
注:這邊只是取了最大值,您也可以通過聚合函數來獲取最小值,平均值等等。
單選按鈕組設置默認值
1. 描述
在參數或者填報界面,希望復選框是默認選中的,或者單選按鈕組以及復選框組是默認選中一個甚至復選框組默認選中多個,這個要如何實現呢?
下面介紹單選按鈕組的默認值在參數界面和填報界面的具體設置方法和效果。復選框和復選框組的默認值設置則參照
復選框組設置默認值。
2. 填報界面
設置單元格的控件類型為單選按鈕組,定義控件的值為自定義,實際值分別為F和M,顯示值分別為女和男,然后在對應的單元格中寫下某個實際值,在BS端預覽(注:使用填報預覽),因為F對應的顯示值是女,所以單選按鈕中女選項會被選中,如下圖所示:

3. 參數界面
設置控件類型為單選按鈕組,在屬性表>高級>數據字典中定義控件的值為自定義,實際值分別分M和F,顯示值分別為男和女,然后在對應的單元格中寫下某個實際值,在BS端預覽,因為F對應的顯示值是女,所以單選按鈕中女選項會被選中,如下圖所示:

注:不論是參數界面還是填報界面,按鈕的默認值必須是實際值。
下拉樹默認值設置
1. 描述
在進行參數查詢時,希望給下拉樹設置默認值進行默認查詢,此時要如何實現呢?
2. 單選下拉樹
在控件的屬性表>高級>控件值處填寫默認值的完整路徑,如下圖所示:

注:蘋果汁第三層,孫林是第二層,華東是第一層數據。
在BS端的效果如下圖:

3. 多選下拉樹
同樣在控件的屬性表>高級>控件值處填寫需要設置默認值的完整路徑,多個值之前用分號隔開,如在控件值中填寫:華東,孫林,蘋果汁;華東,孫林,牛奶,如下圖:

在BS端的效果如下圖:

復選框組設置默認值
1. 描述
在參數或者填報界面,希望單選按鈕或復選框是默認選中的,或者單選按鈕組以及復選框組是默認選中一個甚至復選框組默認選中多個,這個要如何實現呢?
下面介紹單選按鈕組,復選框,復選框組的默認值在參數界面和填報界面的具體設置方法和效果。
2. 復選框的默認值設置
編輯
2.1 填報界面
設置了復選框后,在對應的單元格中填寫上true,然后在BS端預覽,復選框默認的就是被選中的。如下圖所示:

2.2 參數界面
在參數界面設置了復選框之后,在單元格中輸入普通文本“true”。在BS端,復選框默認的就是被選中的。

3. 復選框組的默認值設置
編輯
設置控件類型為復選框組,定義控件的值為數據庫表,數據庫選擇FRDemo,表選擇STScore,實際值和顯示值都是班級CLASSNO所在列,復選框組有Class1,Class2,Class3,Class4四個選項。
復選框組的返回值類型分為數組和字符串,兩種類型返回值的默認值設置是不同的,以下分別介紹填報界面和參數界面下的具體操作:
3.1 填報界面
3.1.1 返回值類型為字符串
設置多個值之間的分隔符為【逗號】,起始符、結束符為【單引號】,即復選框組選中單個如Class1時,返回的結果為'Class1';選中多個如Class1、Class2時,返回結果為'Class1,Class2'。如下圖所示:

1)默認選中一個值
在單元格中寫下一個默認值'Class1',在BS端可以看到Class1被選中了,如下圖所示:

2)默認選中多個值
根據字符串返回類型——字符串的格式樣式,在對應的單元格中寫下多個默認值'Class2,Class3,Class4',在BS端可以看到Class2、Class3、Class4被選中了,如下圖所示:

3.1.2 返回值類型為數組!!!有問題!!!
1)默認選中一個
操作步驟與返回值類型相比,稍微簡單點,在單元格中寫下默認值=['Class1'],在BS端可以看到Class1被選中了。如下圖:
