0

「計算されたサブフォーム」と考えてください。

カスタム コントロールの 1 つで、特定の値に応じて、コンボ ボックスを使用してドロップダウン リストをレンダリングするカスタム コントロールを表示するか、先行入力で入力ボックスをレンダリングするカスタム コントロールを表示したいと考えています。

これは、ビューをレンダリングするカスタム コントロール上にあり、すべてのビュー構成の選択はデザインではなくドキュメントによって処理されるため、いくつかの異なるビューが同じカスタム コントロールを利用します。

例: 最初の列としてステータスを持つカスタム コントロールを使用するステータス別ビューがあり、コンボボックスを使用して、フィルター処理するステータス値をユーザーが選択できるようにします。別のビューは要求番号でソートされており、コンボボックスの代わりに先行入力を使用したいと考えています。

私の好みは、両方に同じ動的ビュー カスタム コントロールを使用し、2 つ (コンボ ボックスまたは入力テキスト) のどちらを使用するかを決定する式を用意することです。ロードするカスタム コントロールを計算するにはどうすればよいですか?

(動的なビュー コントロールの功績は、Teamworks Solutions の Scott Good 氏のチームの功績によるものです。)

4

2 に答える 2

5

ライフサイクル中、XPage は 2 つの場所に存在します。まず、XPage の関連コンポーネントの表現がサーバーに格納されます。次に、ページはライフサイクルを経て、ドキュメントからプロパティを取得し、レンダリングするコンポーネントを確認し、ビュー パネルなどの繰り返しコントロールのデータを取得し、関連する HTML をブラウザーに渡します。ブラウザは、それが存在する 2 番目の場所です。

そのため、カスタム コントロールをそのまま計算することはできません。できることは、loaded プロパティを設定することだけです。loaded は、viewScope 変数、現在の XPage 名、XPage に保存されているビュー名などの非動的計算に基づく必要があります。その行エントリのデータに基づく別のカスタム コントロールを使用します。

もう 1 つのオプションは、拡張ライブラリのダイナミック コンテンツ コントロールまたはスイッチ コントロールです。どちらも、両方のカスタム コントロールをページに配置し、どちらを表示するかを選択するという点で、loaded プロパティの使用に似ています。

あなたが説明していることから、ロードされたプロパティは必要なものをカバーする必要があります。

于 2013-01-10T23:06:18.250 に答える
1

しばらく前に、作成者がインクルードページコントロール( )を使用して、数式に基づく属性を使用してカスタムコントロールをインクルードした、 StackOverflowでこの質問を見ました。xp:includepageName

<xp:include>
     <xp:this.pageName><![CDATA[${javascript:sessionScope.ccPageName + ".xsp";}]]> </xp:this.pageName>
</xp:include>

Paul Withersが彼の回答で説明した手法と同様に、の属性pageNameもページの読み込み時に計算されます。

于 2013-01-11T03:57:25.477 に答える