私は、低帯域幅の領域からのアクセスを含む、大規模な世界規模のアプリケーションに取り組んでいます。そのため、すべての複雑な非表示/計算時に、最小限のSSJSまたは部分的な更新を使用したいと思います。これが私がこれまでに単純な「非表示/いつ」について持っているものです:
- パネルを表示する(「はい」)またはパネルを非表示にする(「いいえ」)ためのCSJS付きの「はい/いいえ」ラジオボタン。
- パネルの内部にはformTableがあり、#1のように、値が表示または非表示になります。
XPageのonClientLoadで、次のコードが実行されます。
// "getRadioValue" is a simple script to return the value of a radio button var v_value = getRadioValue("#{id:radioButton}"); v_div = '#{javascript:getClientId("radioButtonPanel")}'; // show or hide div simply use dojo to change the display of the panel if (v_value == 'Yes') { showDiv(v_div); } else { hideDiv(v_div); };
新しいドキュメントの場合、onClientLoadスクリプトは「radioButtonPanel」を正常に非表示にします。ラジオボタンを「はい」に変更すると、「いいえ」をクリックすると非表示になるのと同じように、radioButtonPanelが表示されます。それは素晴らしい働きをします!:-)
ただし、ドキュメントが保存されて読み取りモードで再度開かれると、onClientLoad CSJSイベントはドキュメントに保存された値を読み取り、パネルを表示するかどうかを決定する必要があります。ドキュメントが編集モードで開かれると、onClientLoadが起動し、radioButton値を読み取り、パネルを正常に表示または非表示にします。
これは、読み取りモードで動作させるために、これまでに試したことです。
- CSJSでは、「#{javascript:currentDocument.getItemValueString('radioButton'}」を使用して値を取得し、
- 「rendered」または「visible」プロパティでいくつかの計算を実行しますが、これはSSJSであり、非表示の場合、「show/hideDiv」CSJSの可視性スタイルの変更を防ぎます。
昔ながらの「div」を追加してスタイルを計算しますが(これはXPagesの前に行っていたものです)、パススルーhtmlを実行できなくなったため、スタイルのCSJS計算を取得できないようです。 。理想的には、次のようなことができます。
<div id="radioButtonPanel" style="<ComputedValue>">
ComputedValueがドキュメントのバックエンド値を読み取り、何も追加しないか「display:none」を追加するかを決定する場所。
この長いフォームでは、他のすべての非表示/日時に多くのビュースコープが必要になるため、viewScopesを使用したくないことに注意してください。
これを100%CSJSにする方法はありますか?とても親密な気がしますが、このプロセス全体で欠けているものがあるのではないかと思います。