2021年2月19日金曜日

モーダル・ダイアログ上のページ・アイテムの値を開いたページに戻す

 モーダル・ダイアログ上のページ・アイテムの値を、それを開いたページのページ・アイテムに戻すには?という質問があったので、手順を記述します。

サンプル・データセットのEMP/DEPT表を利用して、モーダル・ダイアログを開いて新規に従業員を登録し、そこで割り当てられる従業員番号を、モーダル・ダイアログを開いたページのページ・アイテムに戻します。

実装を行う元になるアプリケーションを作成します。SQLワークショップからオブジェクト・ブラウザを開き、EMP表を選択します。そこで、アプリケーションの作成を実行します。

アプリケーション作成ウィザードが開いたら、アプリケーションの作成を実行します。すべてデフォルトで構いませんが、アプリケーションの名前は変更した方が良いでしょう。

作成されたページの中に表EMPを更新するフォームのページが含まれます。このページを呼び出して、従業員を作成する新たなページを作成します。

ページの作成を実行します。

コンポーネント空白ページを選択します。に進みます。

ページの名前ダイアログ戻り値とし、ページ・モード標準オプションの静的コンテンツ・リージョンを開き、リージョン1としてダイアログ戻り値(リージョンの名前になります)を設定します。これでページの作成と同時に静的リージョンが1つ追加されます。に進みます。


ナビゲーションのプリファレンスとして、新規ナビゲーション・メニュー・エントリの作成を選択し、に進みます。


内容を確認して、終了をクリックします。


ページが作成されたら、静的リージョンに従業員番号を保持するページ・アイテムP7_EMPNOを作成します。タイプテキスト・フィールドラベル従業員番号とします。


続いて、従業員を登録するダイアログを開くボタンを作成します。名前B_CREATEラベル従業員登録とします。動作アクションとして、このアプリケーションのページにリダイレクトを選択し、ターゲットの設定を行います。今回はフォームのページが5なので、ページキャッシュのクリアにもを設定し、OKをクリックします。一旦、この状態でページを保存します。


以上で、従業員登録のボタンをクリックするとフォームが開き、従業員を登録できるところまで、ページの作成ができています。

これから従業員番号をモーダル・ダイアログから元のページに戻す実装を行います。

フォームのページを開いて、開発者ツール・バーよりページの編集を実行します。ページ・デザイナが開きます。


左ペインにてプロセス・ビューを開き、ダイアログを閉じるという名前のプロセスを選択します。右ペインのプロパティ・エディタ設定に含まれる戻すアイテムに、従業員番号であるP5_EMPNOを設定します。ダイアログ側の設定は以上です。ページを保存します。


ダイアログ戻り値のページを再度ページ・デザイナで開きます。左ペインで動的アクション・ビューを開き、ダイアログのクローズのタイミングで実行される動的アクションを登録します。

名前従業員番号の設定とし、タイミングイベントダイアログのクローズ選択タイプリージョンリージョンは(ダイアログを開いたボタンのある)ダイアログ戻り値という名前のリージョンを設定します。


Trueアクションを設定します。アクション値の設定を選択します。設定タイプの設定として、Dialog Return Itemを選択します。これでダイアログのクローズというプロセスに設定した、P5_EMPNOの値を受け取ることができます。戻りアイテムP5_EMPNOを設定します。現在編集中のページにあるページ・アイテムではないので、選択リストからはカスタム・ページを選んでページ番号5を指定して、P5_EMPNOを見つけます。直接、文字入力することもできます。


値の元となるページ・アイテムの設定に続いて、設定先となるページ・アイテムを設定します。影響を受ける要素として、選択タイプアイテムアイテムP7_EMPNOとします。


以上で設定は完了です。ページを実行すると、最初のGIF動画になります。

アプリケーションのエクスポートを以下に置きました。実行にはサンプル・スキーマのEMP/DEPTが必要です。

https://github.com/ujnak/apexapps/blob/master/exports/dialogreturnitem.sql

Oracle APEXのアプリケーション開発の一助になれば幸いです。