APIを使用することにより、対話グリッドのフィルタ条件を設定します。使用するAPIはAPEX_IG.ADD_FILTERです。
チャートをクリックして、同時に複数の対話グリッドにフィルタ条件を設定します。
一番最初の記事で作成したAPEXアプリケーションを元に、サンプルの実装を進めます。
同じページに複数の対話グリッドを配置するため、識別できるように静的IDを設定します。
対話グリッドの詳細の静的IDとしてCOUNTRIES1を指定します。
作成済みの対話グリッドを重複させます。
レイアウトの新規行の開始をOFFにし、対話グリッドが横に並ぶようにします。詳細の静的IDとしてCOUNTRIES2を設定します。
以下のように対話グリッドの静的IDを含め、双方に値として®ION_NAME.を指定します。
IG[COUNTRIES1]_REGION_NAME
IG[COUNTRIES2]_REGION_NAME
これからAPIによる実装を行います。
チャート上でクリックした地域名を保持するページ・アイテムを作成します。
識別の名前はP1_REGIONとします。タイプは非表示とします。JavaScriptで値を設定するため、設定の保護された値はOFFにします。対話グリッドに表示されている値にフィルタをかけるため、このページ・アイテムに保存する値は列REGION_IDではなく列REGION_NAMEの値です。
シリーズ人口のリンクのタイプをURLにリダイレクトに変更し、ターゲットのURLとして以下を記述します。選択リストと異なり、表示値は不要なのでnullを指定します。
javascript:apex.item("P1_REGION").setValue("®ION_NAME.", null, false);
ページ・アイテムP1_REGIONに動的アクションを作成します。
作成した動的アクションの識別の名前は地域の変更とします。タイミングはデフォルトでイベントが変更、選択タイプはアイテム、アイテムはP1_REGIONになります。
TRUEアクションとしてサーバー側のコードを実行を選択し、設定のPL/SQLコードとして以下を記述します。APIを呼び出し、それぞれの対話グリッドにフィルタを設定しています。
送信するアイテムとしてP1_REGIONを指定します。
新規にTRUEアクションを作成し、アクションとしてページの送信を選択します。
対話グリッドに設定したフィルタを反映するためには、ページを再送信する必要があります。
以上でアプリケーションは完成です。アプリケーションを実行すると、先頭のGIF動画のように動作します。
今回作成したAPEXアプリケーションのエクスポートを以下に置きました。
https://github.com/ujnak/apexapps/blob/master/exports/link-chart-and-report-api.zip
Oracle APEXのアプリケーション作成の参考になれば幸いです。
完