相談としては「(対話グリッドの)単一ビューに変更された際やリフレッシュされた後に、表示のみの列に対して値毎に色を変える」という実装を行いたい、とのことでした。
サンプル・データセットの表EMPを使った対話グリッドを例に実装してみます。
DEPTNOが10であればEmpnoを赤色で表示します。
DEPTNOが30であればEmpnoを緑色で表示します。
対話グリッドの列EMPNOの詳細のJavaScript初期化コードとして、以下を記述します。defaultGridColumnOptionsとcellTemplateの設定を使っています。
function(options){
options.defaultGridColumnOptions = {
cellTemplate: '{case DEPTNO/}{when 10/}<div class="u-danger-text">&EMPNO.</div>{when 20/}<div class="u-warning-text">&EMPNO.</div>{when 30/}<div class="u-success-text">&EMPNO.</div>{otherwise/}&EMPNO.{endcase/}',
};
return options;
}
テンプレート・ディレクティブを指定するには、値が読取り専用であることが必須です。タイプを式、言語をPL/SQL、PL/SQL式として:EMPNO is not null、実行を各行とすることで、新規行の場合のみEMPNOの入力が可能で、一旦値が設定されると変更を不可(読取り専用)とします。
以上で実装は完了です。
単一ビューではないグリッド・ビューでもテンプレート・ディレクティブは有効なので、Empnoには色が付きます。
簡単なアプリケーションですが、エクスポートを以下に置きました。
https://github.com/ujnak/apexapps/blob/master/exports/singlerowview-color.sql
Oracle APEXのアプリケーション開発の参考になれば幸いです。
完