動的アクションのアクションには、影響を受ける要素というプロパティがあります。影響を受ける要素に複数のページ・アイテムを設定し、そのページ・アイテムが保持している値の合計を計算してみます。
ページの構成は以下になります。
ページ・アイテムP1_ARG_1、P1_ARG_2、P1_ARG_3、P1_SUMすべて、タイプは数値フィールドです。合計を計算するボタンB_CALCを作成し、そのボタンをクリックしたときに動作するアクションとして、以下のJavaScriptを実行します。
// 影響を受ける要素として設定されているページ・アイテムの値を数値として、すべて配列に取り出す。
let args = this.affectedElements.toArray().map( elem => Number(elem.value) );
// 合計を計算する。
const sum = args.reduce(
( previousValue, currentValue ) => previousValue + currentValue,
0
);
// 合計をページ・アイテムに設定する。
apex.items.P1_SUM.setValue(sum);
このとき、TRUEアクションであるJavaScriptコードの実行の影響を受ける要素として、選択タイプをアイテム、アイテムとしてP1_ARG_1、P1_ARG_2、P1_ARG_3を指定します。
今回のように、必ずしもページ・アイテムP1_SUMを影響を受ける要素として指定する必要はなく、影響を受ける要素はJavaScriptのコードが書きやすくなるように指定できます。
以上です。
簡単ですが今回作成したAPEXアプリケーションのエクスポートを以下に置きました。
https://github.com/ujnak/apexapps/blob/master/exports/sample-affected-elements.zip
Oracle APEXのアプリケーション作成の参考になれば幸いです。
完