2016-08-22 14 views
1

おはよう!Oracle Apexのシャトル値に依存すること

私はOracle Apexでページを作成しています。これはドキュメントの作成につながります。このページには、 "テキストフィールド"や "リスト選択"などのような多くのフィールドがあり、独自のロジックを持ち、シャトルフィールド(Aという名前にする)とテキストフィールドB)と命名されます。これは最初のものに依存します。それらの相互作用のスキームは次のとおりです。

  • シャトルAの値は "A"、 "B"、 "C"、 "D"および "others"です。
  • シャトルから値「その他」を選択する場合は、テキストフィールドBも入力する必要があります。つまり、この場合はフィールドBが必要です。

フィールドAの値に応じてフィールドBを動作させることができないという問題があります。私はすでにシャトルBの右半分が "他の"値を持っていた場合、動作していたはずの "onChange"イベントからJavaScript関数のトリガを使用しようとしました。しかし、 "onChange"イベントはシャトルの両方の半分をクリックするたびに発生するため、この方法ではうまくいきませんでした。値を "others"(2つの方法で行うことができます:ダブルクリックまたはシャトルの矢印アイコンのクリックによる)。

質問: "マスターディテール"ロジックでシャトルとテキストフィールドを同期する方法は?

p.s.私はOracle Apex 4.2.6.0003を使用しています。また、選択リストのみを使用して回避策を講じることもできますが、シャトルを使用して問題を解決しようとしています。特に、最後の値がほぼ無限の値になる可能性があることを考慮してください。このようjvascriptコードを使用して

STATIC:A;A,B;B,C;C,Others;OTHERS 

:シャトルの値のリストとして静的な値で

答えて

1

$("#P40_SHUTTLE").change(function(){ 
console.log(apex.item(this).getValue().indexOf("OTHERS") != -1); 
}) 

OTHERSが選択されている場合にtrueを返しますが、(それがの値である

シャトル)。変更はここで聞く正しいイベントです!シャトル の変更に

「とき」の条件タイプの「JavaScriptの表現」を使用して、このコードを使用します:

apex.item(this.triggeringElement).getValue().indexOf("OTHERS") != -1 

あなたはその後、真を使用することができDAにすることを翻訳

DAの虚偽の行為は、例えば、必要に応じてテキストフィールドを表示および非表示にする。私はフロントエンドのそれ以上には行きません。フィールドが表示されているときに表示されるため、テキストフィールドに必要なラベルを表示することがあります。 OTHERS値の存在に関するシャトル値を検査するテキストフィールドにサーバー側の検証(送信時)を追加します。存在する場合は、テキストフィールドが必要です。

テキストフィールドに検証が作成されました。検証の 条件タイプの "PLSQLファンクション本体"

DECLARE 
    l_vc_arr2 APEX_APPLICATION_GLOBAL.VC_ARR2; 
BEGIN 
    l_vc_arr2 := APEX_UTIL.STRING_TO_TABLE(:P40_SHUTTLE); 
    FOR z IN 1..l_vc_arr2.count LOOP 
    IF l_vc_arr2(z) = 'OTHERS' THEN 
     RETURN TRUE; 
    END IF; 
    END LOOP; 

    RETURN FALSE; 
END; 

タイプ:IS NOT NULL
アイテム:テキストフィールド。

妥当性検査は、他の人が選択した値で存在する場合にのみ起動し、テキストフィールドが必要になります。

+0

ありがとう、@トム!私は間違いを理解しました。私はシャトルの値を文字列として扱いましたが、配列として扱っていませんでした。 – PiggyInTheMirror

関連する問題