2023年2月2日木曜日

メニュー・ポップアップから任意の処理を呼び出す - メニュー・ウィジェット

 先日の記事、APEXリストを使った実装も悪くはないけど、直接メニュー・ウィジェットを扱う方法もある、と教えていただいたので試してみました。

初めにAPEXリストと全く同じ動作をする実装を行います。次にメニュー・ウィジェットをradioGroupとして作成します。radioGroupにすると、以下のように動作します。

APEXリストのリージョンの代わりに、静的コンテンツのリージョンを作成します。

ソースHTMLコードとして以下を記述します。

<div id="selectjob_menu"></div>

idselectjob_menuとしていますが、APEXリストとは異なり必ずしも_menuをつける必要はありません。ボタンにdata-menu="selectjob_menu"と設定済みのため、その名前に一致させています。

レイアウト位置Dialogs, Drawers and Popupsを選択します。外観テンプレートとしてBlank with Attributes(No Grid)を選択します。


メニュー・ウィジェットを作成します。

ページ・プロパティJavaScriptページ・ロード時に実行に以下を記述します。


以上の変更で、こちらの記事と同じ動作になります。

メニュー・ウィジェットをJavaScriptのコードで作成する場合は、typeとしてaction以外にradioGrouptoggleといった形式を選ぶことができます。

typeとしてradioGroupを選択し、メニュー・ポップアップを実装するコードです。ページ・ロード時に実行に記述したコードを入れ替えます。


アプリケーションを実行すると、記事の先頭のGIF動画のような動作になります。

ページ2として今回の実装を追加しています。
https://github.com/ujnak/apexapps/blob/master/exports/menu-popup-with-action.zip

Oracle APEXのアプリケーション作成の参考になれば幸いです。

追記

表EMP(サンプル・データセットのEMP/DEPTに含まれる)の列JOBの個別値をデータベースから取得し、メニュー・ポップアップのchoicesとして設定する方法は、

choicesの配列を返すAjaxコールバックを作成します。



Ajaxコールバックを呼び出してから、メニュー・ウィジェットを作成します。