モーダル・ダイアログ上のページ・アイテムの値を、それを開いたページのページ・アイテムに戻すには?という質問があったので、手順を記述します。
サンプル・データセットのEMP/DEPT表を利用して、モーダル・ダイアログを開いて新規に従業員を登録し、そこで割り当てられる従業員番号を、モーダル・ダイアログを開いたページのページ・アイテムに戻します。
実装を行う元になるアプリケーションを作成します。SQLワークショップからオブジェクト・ブラウザを開き、EMP表を選択します。そこで、アプリケーションの作成を実行します。
アプリケーション作成ウィザードが開いたら、アプリケーションの作成を実行します。すべてデフォルトで構いませんが、アプリケーションの名前は変更した方が良いでしょう。
作成されたページの中に表EMPを更新するフォームのページが含まれます。このページを呼び出して、従業員を作成する新たなページを作成します。
ページの作成を実行します。
コンポーネントの空白ページを選択します。次に進みます。
ページの名前をダイアログ戻り値とし、ページ・モードは標準、オプションの静的コンテンツ・リージョンを開き、リージョン1としてダイアログ戻り値(リージョンの名前になります)を設定します。これでページの作成と同時に静的リージョンが1つ追加されます。次に進みます。
内容を確認して、終了をクリックします。
ページが作成されたら、静的リージョンに従業員番号を保持するページ・アイテムP7_EMPNOを作成します。タイプはテキスト・フィールド、ラベルは従業員番号とします。
続いて、従業員を登録するダイアログを開くボタンを作成します。名前をB_CREATE、ラベルは従業員登録とします。動作のアクションとして、このアプリケーションのページにリダイレクトを選択し、ターゲットの設定を行います。今回はフォームのページが5なので、ページは5、キャッシュのクリアにも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のアプリケーション開発の一助になれば幸いです。
完