串接 LOV
串接兩個 LOV, 第一個 LOV 的值會決定第二個 LOV 的可顯示值
User Story
有兩個 LOV 欄位,預約開始與結束時間。可預約的最長時間為 2 個小時。預約時段以 30 分鐘為單位。
預約開始的時間決定後,結束時間可選擇的時段只限於兩個小時內的時段。
例如,開始時間 8:00, 可選擇的時間應為 08:30, 09:00. 09:30, 10:00.
原理
串接兩個 LOV
第 2 個 LOV 的資料來源中的 SQL Query 要參考第 1 個 LOV 的值,執行 Query 時,以 WHERE 條件篩選資料。
Apex 使用 Ajax 方式提交第 1 個 LOV 的值到後端,執行第 2 個 LOV 的查詢。之後,更新第 2 個 LOV 的清單值。
資料集準備
準備時段的資料,每半小時一個時段,每個時段指派一個唯一編號,編號聯號:
1
08:00
2
08:30
3
09:00
4
09:30
5
10:00
產生資料集的 QuickSQL 及 insert statement:
步驟
S1 在頁面中新增兩個 item, 型態皆為 Select List
S2 設定第一個 Select List item 的 List of Values 屬性:
Type: SQL Query
SQL Query:
S3 設定第二個 Select List item 的 List of Values 屬性:
Type: SQL Query
SQL Query:
注意在 WHERE clause 中,我們參考到第一個 item :P6_START_TIME
的值。
S4 設定第二個 Select List item 的 Cascading List of Values 屬性:
Parent Items(s) 指決定第二個 item 的 LOV 的父 item, 設成
:P6_START_TIME
Item to Submit: 在更新第二個 item 的的 LOV 值時所要參考的資料,必須從前端送到後端。所以,
:P6_START_TIME
的值必須提交到後端。
S5 測試
起始時間選 08:00, 結束時間的 LOV 的清單值只顯示近兩個小時:
S6 完成
Last updated