クイック・スタート - 動的選択ボックス

動的選択ボックスの各エントリーは、作業リストのエントリーもしくはこのウェブレットのプロパティでハードコーディングされた一連の項目によって定義されます。

作業リストを使用する場合

ドロップダウン・オプションの定義に作業リストを使用する場合、Webroutineを作成して選択された値を格納するフィールドと選択オプションを含む作業リストをWEB_MAPに定義する必要があります。作業リストは*JSONリストとして定義されていなければなりません。作業リストには通常、次のような2つまたは3つのカラムがあります。

 

1.  作業リストがWEB_MAPで*HIDDENではない場合は、省略値で作業リストを表わすテーブルがWebページに含まれます。リストをビジュアライズするテーブルは削除します。削除するには、リストで右クリックし、ポップアップ・メニューから、[全てのリスト削除]を選択してください。

2.  [ウェブレット テンプレート]タブをクリックし、上にあるドロップダウン・リストから[標準ウェブレット]を選択、[動的選択ボックス]ウェブレットを探します。

3.  動的選択ボックス ウェブレットを、値を格納するフィールド上にドラッグし、マウスの左ボタンを離してください。

4.  ウェブレットをクリックして、[詳細] タブを確認します。[vf_wamevent] プロパティと [value] プロパティにウェブレットをドラッグしたフィールドを示す値が設定されていることを確認してください。Webページ表示の際、valueプロパティのフィールドに現在入っている値を使用して選択されたエントリーが設定されます。このウェブレットの値が変更されると、適切な値がnameプロパティに指定されたフィールド(この場合、同じフィールド)に入れられます。

5.  listnameプロパティをWEB_MAPに送られる作業リストに変更します。

6.  codefieldプロパティとcaptionfieldプロパティに作業リストの適切なフィールドをセットします。

7.  sizeプロパティにリストボックスの希望の高さを行数で設定します。(1を設定するとドロップダウンとして表示されます。)

itemsプロパティを使用する場合

このウェブレットのプロパティでハードコーディングされた一連の項目を使用するには、WEB_MAPで選択された値のフィールドを指定するWebroutineを作成する必要があります。LANSAエディターでWebroutine用に生成されたXSLを開き、以下の手順に従ってください。

1.  [ウェブレット テンプレート]タブをクリックし、上にあるドロップダウン・リストから[標準ウェブレット]を選択、[動的選択ボックス]ウェブレットを探します。

2.  動的選択ボックス ウェブレットを、値を格納するフィールド上にドラッグし、マウスの左ボタンを離してください。

3.  ウェブレットをクリックして、[詳細]タブを確認します。[vf_wamevent] プロパティと [value] プロパティにウェブレットをドラッグしたフィールドを示す値が設定されていることを確認してください。Webページ表示の際、valueプロパティのフィールドに現在入っている値を使用して選択されたエントリーが設定されます。このウェブレットの値が変更されると、適切な値がnameプロパティに指定されたフィールド(この場合、同じフィールド)に入れられます。

4.  itemsプロパティの省略記号(...)のボタンを選択して、ドロップダウン・オプションとして使用する項目のリストを設定します。そしてドロップダウンに必要なエントリーの定義に進みます。

自動更新

動的選択ボックスは別のフィールドをモニターし、そのフィールドが更新される度に自身も自動的に更新することができます。ウェブレットが作業リストを使って埋められた場合、新しい作業リストのコピーを出力するJSON Webroutineを作成する必要があります。ウェブレットは更新が必要な場合に毎回このWebroutineを呼び出します。

1.  updateOnFieldChangeにモニターしたいフィールドのIDを設定します。通常はフィールド名ですが、Changeイベントを生成できるHTMLフォーム・エレメントのIDにすることもできます。このフィールドは新しいリストを提供するWebroutineに送られます。

2.  updateWamNameupdateWrNameプロパティに新しいリストを提供するWAM/Webroutineの名前を指定します。このWebroutineではlistnameプロパティで定義されたリストの新しいコピーを出力しなければなりません。

3.updateFieldsToSubmitプロパティを設定して、更新Webroutineに送信する入力値が識別できるようにします。

リスト更新には、更新Webroutineを必ず使用しなければならない訳ではありません。多くの単純なケースでは、メインのWebroutineの最初のリスト出力で可能な全ての値をウェブレットに提供して、selectorFieldを使ってリストをフィルターすることも可能です。サーバーに要求を送信してその応答を待つのを避けるため、ウェブレットには最初のリストが記憶されており、更新が行われる時にselectorFieldフィルターを再度適用できます。

例えば、updateOnFieldChangeselectorValueFieldプロパティの両方で同じフィールドが指定されている場合、ユーザーがこのフィールドを変更する度に再びフィルターされます。

いずれのアプローチを取るかはバランスを考えて決定します。selectorFieldを使用することにより、より速くリスト更新ができますが、より多くのデータをブラウザに送信しないといけないため、最初のページのロードに時間がかかる可能性があります。一方で更新Webroutineの使用により、最初のロード時間は短くなり、リアルタイムの最新データ取得が可能になったり、リスト構造により複雑なロジックを含めることが可能になりますが、リストがサーバーから取り出される間に遅延が生じる場合があります。

 

以下も参照してください。

プロパティ - 動的選択ボックス