LOVモードでのADFリスト・バインディングのカスタマイズ

データ・コントロール・パレットから挿入する次のUIコントロールに、LOV(値リスト)モードのADFリスト・バインディングを設定できます。

注意: LOVボタンの場合、コントロールによって、選択を表示するためのUIと、選択を実行するためのUI(個別ウィンドウの形式)の両方が提供されます。 その他すべてのコントロールは、別個のコントロールを追加して、ユーザーの選択の対象を表示することが必要です。

LOVモード・バインディングにより、ユーザーは、1つ以上の属性を含むデータ・コレクションの行を表示するリストから、値を選択できます。 ユーザーが値を選択すると、LOVにより、別のデータ・コレクションの1つ以上の属性が、選択内容に応じて更新されます。 LOVモードでリスト・バインディング・エディタを使用して、ソースとターゲットのデータ・コレクション、それらの属性間のバインディング、およびLOVに表示する属性を定義します。

LOVモードでリスト・バインディングを設定するには、次のようにします。

  1. 「UIエディタ」でデータ・パネルを開きます。

  2. 「データ・コントロール・パレット」で、表示する属性を選択します。

    データ・コレクションではなく、必ず属性を選択します。

  3. 「データ・コントロール・パレット」から、目的のコントロールをデータ・パネルに追加します。

    ヒント: コンボボックス、LOVボタン、リストまたはラジオ・ボタン・グループを、LOVの選択内容を受け取るフォーム・フィールドの近くにある、開いているパネルに配置します。

  4. 「構造」ウィンドウから、コントロール用のリスト・バインディング・エディタを表示します。

表示するLOVを定義するには、次のようにします。

  1. リスト・バインディング・エディタでは、「リスト・バインディング・モード」ドロップダウン・リストから「LOVモード」を選択します。

  2. 「LOVの更新属性」タブをクリックして、LOVで使用するデータ・コレクションを選択します。

    「LOV(ソース)データ・コレクション」は、選択肢の値リストの表示に使用するコレクションを定義します。 これは、ビジネス・サービスの「モデル」プロジェクトにあるマスター・データ・コレクションによって制限されないコレクションにする必要があります。

    「ターゲット・データ・コレクション」は、JClientパネルで選択された値を受け取る属性を含むコレクションです。 パネルに表示するデータ・コレクションと同じデータ・コレクションを指定してください。

  3. イテレータ・ドロップダウン・リストが、選択されたデータ・コレクションにアクセスするために、指定のイテレータをすでに表示している場合は、選択を変更しません。 ドロップダウンが空の場合、「新規」をクリックしてイテレータを生成し、ドロップダウン・リストに表示します。

    警告: ドロップダウン・リストでイテレータ選択を変更すると、前に作成した属性選択が削除されます。 イテレータの選択を変更する前に、元の属性選択を記録しておいてください。 必要に応じて「取消」を押して、元の属性選択を更新しないでバインディング・エディタを終了できます。 生成したバインディングを使用しない場合、未使用のイテレータ・バインディングをバインディング定義ファイルから削除できます。エディタで「取消」を押しても、バインディングは自動的に削除されません。

  4. 「追加」をクリックして、2つのデータ・コレクション間で少なくとも1つの属性をバインドします。

    リスト・バインディング・エディタの下部には、値リストの表示に使用するコレクションと、属性選択を受け取るコレクション間の、LOVバインディング属性の候補が表に表示されます。

  5. JClientフォームに表示されるフィールドに値を提供するために使用する「LOV属性」ドロップダウンから、属性を選択します。

  6. LOVからの値を受け取る「ターゲット属性」ドロップダウンから、属性を選択します。

  7. 再度「追加」をクリックすることで、複数の属性を同じLOVでバインドします。

  8. 「LOVの表示属性」タブをクリックし、LOVウィンドウに表示する属性を選択します。「選択済の属性」リストにはいくつでも属性を追加できますが、LOVバインディング属性(選択された値を表示する属性)を追加する必要はありません。

  9. 「OK」をクリックし、バインディング設定を保存します。

JDeveloperはjbInit()メソッド内にsetModel()メソッドを追加して、コントロール・バインディングを生成します。 たとえば、データ・コントロール・パレットからリストを挿入後、メタデータを指定するためにDataControlIdを参照するメソッドは次のようになります。

myList.setModel((ListModel)panelBinding.bindUIControl("DataControlId", myList));

新しいバインディング用のメタデータが、バインディング定義ファイルに追加されます(UIModel.xml)。


<DCControl
         id="SameAsSourceLOVAttributeName"
         DefClass="oracle.jbo.uicli.jui.JULovButtonDef | JUComboBoxDef | JUListSingleSelDef | JUButtonGroupDef | JUSpinnerDef"
         SubType="DCLovButton | DCComboBox | DCListSingleSel | DCButtonGroup | DCSpinner"
         IterBinding="DataCollectionIteratorId"
         ApplyValidation="false"
         ListOperMode="0"
         ListIter="OrdersView1Iterator"
         AllowSearch="false"
         TestFlag="false" >
         <AttrNames>
            <Item Value="MySelectedTargetAttribute" />
         </AttrNames>
         <ListAttrNames>
            <Item Value="MySelectedLOVSourceAttribute" />
         </ListAttrNames>
         <ListDisplayAttrNames>
            <Item Value="MySelectedDisplayAttribute1" />
            <Item Value="MySelectedDisplayAttribute2" />
            ...
         </ListDisplayAttrNames>
</DCControl>    

コントロールを挿入して、更新されたLOVターゲット属性値を表示するには、次のようにします。

  1. 「データ・コントロール・パレット」の最上部で、LOVバインディングのターゲット属性として前に選択済の属性を選択します。

  2. 「ドラッグ・アンド・ドロップの形式」リストから、更新された属性値を表示するために挿入するUIコンポーネントを選択します。

  3. 「データ・コントロール・パレット」から開いたパネルへ、選択した属性をドラッグします。

LOVで表示する行数を修正するには、次のようにします。

  1. ビジュアル・エディタで開かれているドキュメントを使用して、「ビュー」->「構造」を選択して、「構造」ウィンドウを開きます。

  2. 「構造」ウィンドウのツールバーでUI Model tab icon「UIモデル」)をクリックしてノードを拡張し、バインディングのリストを表示します。

  3. LOVのソース・データ・コレクション用に選択したイテレータ・バインディングを選択して、「ビュー」->「プロパティ・インスペクタ」を選択し、プロパティ・インスペクタを開きます。

  4. プロパティ・インスペクタの「レンジ・サイズ」フィールドで値を編集して[Enter]キーを押します。 値を、デフォルトの10行から増やすことができます。

    値の-1および0には、特別な意味があることに注意してください。 値-1は、コレクションから利用可能なすべてのオブジェクトを戻し、値0は、コレクションがデータ・ソースから取得するために使用するのと同じ数のオブジェクトを戻します。

レンジ・サイズの操作の詳細は、「ADFイテレータ・バインディングを使用する行フェッチの制限」を参照してください。


ADFバインディングとSwingコントロールについて
JClientでのLOVダイアログのサポートについて

 

Copyright © 1997, 2004, Oracle. All rights reserved.