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

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

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

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

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

  1. データ・パネルをJavaビジュアル・エディタで開きます。

  2. データ・コントロール・パレットから、開いたフォームまたはパネルまで、表示する属性をドラッグします。

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

  3. 続いて、コントロールをデータ・パネルに追加します

    ヒント: LOVボタンを、LOVの選択内容を受け取るフォーム・フィールドの近くにあるパネルに配置します。

  4. 目的のコントロール用のリスト・バインディング・エディタを表示します

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

  1. リスト・バインディング・エディタで「LOVの更新属性」タブをクリックして、LOVで使用するデータ・コレクションを選択します。

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

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

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

    警告: ドロップダウン・リストでイテレータの選択内容を変更すると、以前選択していた属性が削除されます。イテレータの選択を変更する前に、選択されていた元の属性を記録しておく必要があります。必要に応じて「取消」を押し、元の属性選択を更新しないでバインディング・エディタを終了できます。

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

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

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

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

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

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

  8. 属性でサポートされる場合には、オプションとして「NULL値の選択」タブを選択し、NULL値を指定できます。これは、他の値が指定できないときに選択する項目です。

  9. さらに、オプションとして「ランタイムLOVダイアログの詳細」タブを選択し、LOVダイアログの表示位置とサイズをカスタマイズできます。

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

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

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

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

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

  1. 「データ・コントロール・パレット」から開いたパネルまで、LOVバインディングのターゲット属性として前に選択済の属性をドラッグします。

  2. 子を追加ポップアップ・リストから、更新後の属性値を表示するために挿入するUIコンポーネントを選択します。

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

  1. 「表示」次を選択「構造」を選択して、「構造」ウィンドウを表示します。

  2. 「アプリケーション・ナビゲータ」でmypackage.PageDefsを開き、LOVをバインドしたコントロールを含むフォームまたはパネルに対するPageDef.xmlを選択します。

  3. 「構造」ウィンドウでexecutablesを開き、イテレータのリストを表示します。

  4. LOVのソース・データ・コレクションとして作成したイテレータ・バインディングを選択します。

  5. 「表示」次を選択「プロパティ・インスペクタ」を選択して、「プロパティ・インスペクタ」を開きます。

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

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

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


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