16.11.3 動的リストの作成
動的リストは、SQL問合せまたは実行時に実行されるPL/SQLファンクションに基づいています。
- 動的リストの作成について
動的リストの作成に関連するステップについて説明します。 - 動的リスト構文の理解
動的リスト構文について説明します。 - 動的リストを最初から作成
リストの作成ウィザードを実行して動的リストを最初から作成します。
親トピック: リストの作成
16.11.3.1 動的リストの作成について
動的リストの作成に関連するステップについて説明します。
動的リストにより、SQL問合せまたはSQL問合せを戻すPL/SQLファンクションからのアイテムに基づくリスト・コンポーネントを作成できます。これらの動的リストは、テーマのリスト・テンプレートを使用してページにレンダリングできます。
動的リストの作成プロセスでは、次のステップを実行します。
-
ステップ1: 次のいずれかの方法で動的リストを作成します。
-
リストの作成ウィザードを実行して、「動的」リスト・タイプを選択します。
-
リストのコピー・ウィザードを実行して既存の動的リストをコピーします。
-
-
ステップ2: リスト問合せを定義します。
-
問合せソース・タイプを選択します。オプションは次のとおりです。
-
SQL問合せ
-
SQL問合せを戻すファンクション
-
-
SQL問合せを入力します。
-
-
ステップ3: リスト・リージョンを作成して、ページにリストを追加します。
親トピック: 動的リストの作成
16.11.3.2 動的リスト構文の理解
動的リスト構文について説明します。
SQL問合せまたはSQL問合せを戻すファンクションを使用して、動的リストを作成します。Oracle APEXは、次の表に示すようにSELECT
構文のリストの列位置を使用して問合せの結果を解釈します。列の別名は無視されるため、問合せで返される情報を最も適切に示す名前を選択します。SQL文では、SELECT
構文のリストに2つ以上の列を含める必要がありますが、必要に応じて最大17列を返すことができます。すべてのオプション列は、NULL
値をプレースホルダとして受け入れ、後の列位置に対してNULL以外の値を指定できます。たとえば、リスト・リージョンの「外観」の「リスト・テンプレート」属性にバッジ・リストを選択した場合、ユーザー属性1に対応する列8の値によって、バッジ内に表示されるテキストが決まります。
ヒント:
「リスト」リージョンのドキュメントでは、異なる「外観」テンプレート・オプションで使用されるユーザー属性値が説明されています。列 | 用途 | データ型 | 必須 | ノート |
---|---|---|---|---|
1 |
レベル |
|
Yes |
階層リストの深さレベル。それ以外の場合はNULLを使用します |
2 |
Label |
|
Yes |
リスト・エントリに表示するテキスト |
3 |
ターゲットURL |
|
No |
リスト・エントリの選択時にブランチ先となるターゲットURL |
4 |
現在かどうか |
|
No |
リスト・エントリの動作を制御します。有効な値は'YES'、'NO'およびNULLです |
5 |
アイコン名 |
|
No |
リスト・エントリに表示されるアイコンの名前 |
6 |
イメージ属性 |
|
No |
幅や高さなどのイメージの属性 |
7 |
イメージの |
|
No |
ユーザーがイメージ上でクリックする必要のあるテンプレートでアクセシビリティに必要なイメージ |
8 |
ユーザー属性1 |
|
No |
なし |
9 |
ユーザー属性2 |
|
No |
なし |
10 |
ユーザー属性3 |
|
No |
なし |
11 |
ユーザー属性4 |
|
No |
なし |
12 |
ユーザー属性5 |
|
No |
なし |
13 |
ユーザー属性6 |
|
No |
なし |
14 |
ユーザー属性7 |
|
No |
なし |
15 |
ユーザー属性8 |
|
No |
なし |
16 |
ユーザー属性9 |
|
No |
なし |
17 |
ユーザー属性10 |
|
No |
なし |
たとえば、従業員名の動的リストに対する単純な問合せは次のようになります。
select null c1_level,
ename c2_name_for_label
from emp
order by ename
リスト内の各従業員名の横に個人アイコンを含めるには、次のように、間の列にNULL
を選択し、5列目の位置でfa-user
のようなアイコンの名前を返します。
select null c1_level,
ename c2_name_for_label,
null c3_target_url,
null c4_is_current,
'fa-user' c5_icon_name
from emp
order by ename
リスト・エントリをページ10にリンクするには、P10_EMPNO
ページ・アイテムのEMPNO
の値を渡して、次のように3番目の列にターゲットURLの値を指定するように問合せを調整します。
select null c1_level,
ename c2_name_for_label,
apex_page.get_url(p_page => 10,
p_items => 'P10_EMPNO',
p_values => EMPNO) c3_target_url,
null c4_is_current,
'fa-user' c5_icon_name
from emp
order by ename
次の問合せは、ユーザー属性の値を返します。前の問合せを拡張し、ユーザー属性1の列8のスロットに各従業員の給与(sal
)を返します。「リスト」リージョンの「外観」、「リスト・テンプレート」オプション、バッジ・リストでは、このユーザー属性1の値をバッジに表示するテキストとして使用します。
select null c1_level,
ename c2_name_for_label,
apex_page.get_url(p_page => 10,
p_items => 'P10_EMPNO',
p_values => EMPNO) c3_target_url,
null c4_is_current,
'fa-user' c5_icon_name,
null c6_icon_attrs,
null c7_icon_alt_text,
sal c8_user_attr1_badge_text
from emp
order by ename
select level c1_level,
ename c2_name_for_label
apex_page.get_url(p_page => 10,
p_items => 'P10_EMPNO',
p_values => EMPNO) c3_target_url,
null c4_is_current,
'fa-user' c5_icon_name
from emp
connect by prior empno = mgr
start with mgr is null
ファンクションによって定義されたSQL問合せを戻す必要がある場合は、同じルールが適用されます。次の例に示すように、PL/SQLの複数行の文字列リテラル構文q'[ ... ]'
を使用すると、複数の行にまたがる問合せテキストをより簡単に返すことができます。正しくフォーマットされたSQL文を返す構文が許可されます。
return q'[
select null c1_level,
ename c2_name_for_label,
apex_page.get_url(p_page => 10,
p_items => 'P10_EMPNO',
p_values => EMPNO) c3_target_url,
null c4_is_current,
'fa-user' c5_icon_name
from emp
order by ename
]';
親トピック: 動的リストの作成