2021年2月18日木曜日

動的アクションのクライアント側の条件を定義する

 動的アクションのクライアント側の条件が動かない、との相談を受けました。少々確認が必要だったので、その作業を記録します。

クライアント側の条件タイプとしてアイテム = 値を指定したときに、アイテムが選択リスト(LOV)だった場合、としては画面に表示される値を指定するのか、ページ・アイテムとして保存される値を指定するのか?という点を確認しました。

結果としては、ページ・アイテムとして保存される値です。LOVの設定としては表示値ではなく戻り値の方です。

確認のためにアプリケーションを作りました。

空のアプリケーション(名前DA Client Side Conditionとしました)を作成し、ホーム・ページに静的コンテンツのリージョン(名前Country and Statesとしました)を追加します。

国を選択するページ・アイテムをP1_COUNTRYとして作成し、タイプ選択リストにします。ラベルにはCountryを設定します。

LOVタイプ静的値追加値の表示OFFNULL表示値- Choose Country -を指定します。

LOVの静的値として以下の3つを設定しました。

  • 表示値: United States、戻り値: US
  • 表示値: Japan、戻り値: JP
  • 表示値: Romania、戻り値: RO

一般的には、国情報はISO 3166に基づいたLOVを、共有コンポーネントにしている場合が多いと思います。

次に、州を入力するページ・アイテムP1_STATESを作成します。これは動的アクションにて表示、非表示にするためだけに使用するので、州の一覧を選択リストにするといった凝ったことは行いません。ラベルStatesと設定します。

国としてUnited Statesが選択されたときにページ・アイテムP1_STATESを表示し、そうで無い時は表示しない動的アクションを定義します。

名前Activate Statesとし、タイミングイベント変更選択タイプアイテムアイテムP1_COUNTRYとします(P1_COUNTRYにたいして動的アクションの作成を行うと、デフォルトでこのタイミングになるはずです)。

クライアント側の条件タイプアイテム = 値アイテムP1_COUNTRYUSとします。

Trueアクションとして、識別アクション表示影響を受ける要素として、選択タイプアイテムアイテムP1_STATESとして、アクションを作成します。

作成したTrueアクションにたいして、反対のアクションの作成を実行すると、ページ・アイテムP1_STATESを非表示にするFalseアクションが作成されます。

以上で動作を確認するためのアプリケーションが作成できました。アプリケーションを実行すると、最初のGIF動画の動作が確認できると思います。

作成したアプリケーションのエクスポートを以下に置きました。

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

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