Oracle® Fusion Middleware Oracle Application Development Frameworkデスクトップ統合開発者ガイド 11gリリース1 (11.1.1.9.0) B66694-04 |
|
![]() 前 |
![]() 次 |
この章では、ドロップダウン値リスト(依存値リストを含む)を統合Excelワークブックおよびワークブック内の表に作成する方法、およびユーザーがワークブックから起動できるFusion Webアプリケーションから「検索および選択」リスト・ピッカー・ダイアログを表示する方法について説明します。
この章の内容は次のとおりです。
エンド・ユーザーが値の範囲から選択できるようにしたり、エンド・ユーザーが統合Excelワークブックに入力できる値を成約したりするシナリオでは、統合Excelワークブックに値リストを実装することを検討してください。ADFデスクトップ統合では、これらのユースケースに複数の方法で対応できます。たとえば、次を構成できます。
Excelワークシート・セルのドロップダウン値リスト
あるリストに表示される値(子の値リスト)が、別のリストで選択した値(親の値リスト)に依存する、依存値リスト
リストから値を選択するための高度な機能を提供する「検索および選択」リスト・ピッカー・ダイアログの表示を構成します。
エンド・ユーザーが選択できる値の完全セットが比較的小さい(例: 値の数が30未満)シナリオでは、統合Excelワークブックに値リストを構成することを検討してください。Fusion Webアプリケーションからページの「検索および選択」リスト・ピッカー・ダイアログを使用すると、値リストの値が30未満の場合、操作性が向上する可能性があります。
ADFデスクトップ統合からADF値リスト・コンポーネントおよび他のサブコンポーネントを使用すると、エンド・ユーザーにデータを表示して選択できる様々なインタフェースを作成できます。図8-1に、この章の以降の項で詳しく後述する、Summitサンプル・アプリケーション・ワークブックいくつかの例を示します。
統合Excelワークブックに値リストを追加した後、ワークブックを構成するために追加機能が必要になることがあります。次の各項では、使用可能なその他の機能について説明します。
スタイル: 事前定義済のExcelのスタイルをいくつか使用して、フォーム・タイプ・コンポーネントの表示を構成できます。詳細は、10.2項「スタイルの使用」を参照してください。
EL式: EL式をフォーム・タイプ・コンポーネントとともに使用できます。詳細は、付録B「ADFデスクトップ統合のEL式」を参照してください。
ツールチップ: 追加の情報や指示テキストをエンド・ユーザーに表示するようにツールチップを構成できます。詳細は、10.6項「ADFデスクトップ統合コンポーネントでのツールチップの表示」を参照してください。
アクション・セット: 第9章「統合Excelワークブックへの対話性の追加」で説明されているように、1つ以上のアクションの順序付けられたリストを構成して、対話性を統合Excelワークブックに追加できます。
ADF値リスト・コンポーネントは、実行時にドロップダウン値リストをExcelワークシート・セルに作成する場合に使用します。ADF値リスト・コンポーネントは、たとえば多くても20または30項目の簡単な選択リストを対象にしていますが、最大で250の値を実行時に表示できます。ADF値リスト・コンポーネントは、Excelワークシートのセルに挿入できます。図8-2に、リージョンのリストで有効な値のいずれかを選択するのをユーザーが制約される、Summitサンプル・アプリケーションのEditWarehouseInventory-DT.xlsx
からの実装を示します。
ListID
プロパティの値を指定する必要があります。ListID
プロパティは、ワークブックDownSync
アクションを起動した後で実行時にドロップダウン・メニューに値リストを移入するリスト・バインディングを参照します。
図8-3に、ADF値リスト・コンポーネントのプロパティ・インスペクタが最前面に表示された状態を示します。ADF値リスト・コンポーネントは、実行時にExcelワークシートのドロップダウン・メニューに値を移入するリスト・バインディング(RegionId
)を参照します。
注意:
|
ADF値リスト・コンポーネントを挿入するには:
統合Excelワークブックを開きます。
コンポーネントを配置するExcelワークシートのセルを選択します。
コンポーネント・パレットで「ADF値リスト」を選択して、コンポーネントの挿入をクリックします。または、「Oracle ADF」タブで、コンポーネントの挿入ドロップダウン・リストからADF値リストを選択します。
ListIDプロパティの入力フィールドの横にある参照(...)アイコンをクリックしてバインディングIDピッカーを起動し、ページ定義ファイルで公開されたリスト・バインディングを選択します。
プロパティ・インスペクタで、コンポーネントの外観、設計およびレイアウトを決定する他のプロパティを構成します。ADF値リスト・コンポーネントのプロパティの詳細は、A.5項「ADF値リスト・コンポーネントのプロパティ」を参照してください。
「OK」をクリックします。
注意:
|
ADF表コンポーネント列でドロップダウン値リストをレンダリングする場合は、ModelDrivenColumnComponentサブコンポーネントを使用します。値リスト・コンポーネントは、たとえば多くても20または30項目の簡単な選択リストを対象にしていますが、最大で250の値を実行時に表示できます。5.5項「コンポーネント・パレットの使用」で説明されているように、他のADFデスクトップ統合コンポーネントとは異なり、ModelDrivenColumnComponentサブコンポーネントはコンポーネント・パレットには表示されません。かわりに、ADF表コンポーネント列のUpdateComponent
プロパティに値を指定するときに、サブコンポーネントとして選択します。ADF表コンポーネント列のプロパティの詳細は、A.11.2項「ADF表コンポーネントの列プロパティ」を参照してください。モデルドリブン・リストの作成の詳細は、7.15項「ADF表コンポーネントへのModelDrivenColumnComponentサブコンポーネントの追加」を参照してください。
ModelDrivenColumnComponentサブコンポーネントを指定したら、モデルドリブン・リストに関連付けられたツリー・バインディング属性を、ModelDrivenColumnComponenサブコンポーネントのValue
プロパティの値として指定する必要があります。ツリー・バインディング属性のモデルドリブン・リストは、実行時にADF表コンポーネントの列のドロップダウン・メニューに値リストを移入します。モデルドリブン・リストの作成の詳細は、『Oracle Application Development Framework Fusion開発者ガイド』のモデルドリブン・リストの作成方法に関する項を参照してください。
ADF表コンポーネント列に列を追加して、ModelDrivenColumnComponent
をサブコンポーネントとして選択します。それから、ツリー・バインディング属性をModelDrivenColumnComponent
サブコンポーネントのValue
プロパティの値に指定します。モデルドリブン・リストは、指定するツリー・バインディング属性に関連付ける必要があります。
注意:
|
始める前に:
ADF表コンポーネントでの値リストの作成方法を理解しておくと役立ちます。詳細は、8.3項「ADF表コンポーネント列での値リストの作成」を参照してください。
他のADFデスクトップ統合の機能を使用して追加できる機能についても理解しておくと役立ちます。詳細は、8.1.2項「統合Excelワークブックに値リストを追加するための追加の機能」を参照してください。
ADF表コンポーネント列に値リストを作成するには:
統合Excelワークブックを開きます。
ADF表コンポーネントを参照するExcelワークシートのセルを選択し、「Oracle ADF」タブの「プロパティの編集」ボタンをクリックします。
「コンポーネントの編集: ADF表」ダイアログで、Columnsの入力フィールドの横にある参照(...)アイコンをクリックします。
「列の編集」ダイアログが表示され、選択したADF表コンポーネントのすべての列が一覧表示されます。
「追加」をクリックして、新しい列を追加します。
新しく作成した列に適切なオプションを選択します。
UpdateComponentの入力フィールドの横にある参照(...)アイコンをクリックして、更新操作とダウンロード操作の実行時の値リストを構成します。
(オプション) InsertComponentの入力フィールドの横にある参照(...)アイコンをクリックして、挿入操作の実行時の値リストを構成します。これは滅多にありません。
両方のオプションでも、作成するサブコンポーネントの選択ダイアログが表示されます。
ModelDrivenColumnComponentを選択して「OK」をクリックします。
手順5で選択したプロパティを展開して、Value
プロパティのモデルドリブン・リストに関連付けられたツリー・バインディング属性を選択します。
ユーザーに列の値を編集させる場合は、ReadOnly
プロパティをFalse
に設定し、それ以外の場合は、True
に設定します。
図8-4に、Summitサンプル・アプリケーションのEditCustomers-DT.xlsx
ワークブックにレンダリングされるクレジット評価列のプロパティ・インスペクタを示します。
「OK」をクリックします。
実行時には、ADF表コンポーネントはDownload
アクションを起動して、それぞれの列に値を移入します。また、このアクションは値リストをレンダリングするよう構成した列に値リストを移入します。図8-5に、Summitサンプル・アプリケーションのEditCustomers-DT.xlsx
ワークブックの例を示します(クレジット評価は、値リストを表示するように構成されます)。
ADF表コンポーネントを構成し、Fusion Webアプリケーションの既存のモデルレイヤー・メタデータを使用して、統合Excelワークブックに「検索および選択」リスト・ピッカー・ダイアログを表示できます。
「検索および選択」リスト・ピッカー・ダイアログは、検索アイコンをまたはボタンをクリックして、ADF Facesページでaf:inputListOfValues
コンポーネントの「検索および選択」ポップアップを開いた場合に表示されるダイアログと似ています。図8-6に、EditCustomers-DT.xlsx
ワークブックからの例を示します(エンド・ユーザーは、新しい値を入力するセルをダブルクリックします)。表示されるポップアップから新しい値を検索して選択します。
ヒント: 値を選択するために、ユーザーに列のセルをダブルクリックするように指示する列ヘッダーのツールチップを追加することを検討してください。 |
ADF表コンポーネントにモデルドリブン・リスト・ピッカーを追加する手順:
JDeveloperでFusion Webアプリケーションを開きます。
af:inputListOfValues
コンポーネントを使用するのと同じ方法で、ビュー・オブジェクトを構成します。
ビュー・アクセッサを追加します。
ビュー・アクセッサの作成の詳細は、『Oracle Application Development Framework Fusion開発者ガイド』のエンティティ・オブジェクトまたはビュー・オブジェクトのビュー・アクセッサを作成する方法に関する項を参照してください。
属性の値リスト(LOV)を作成します。
値リスト・コンポーネントの作成の詳細は、『Oracle Application Development Framework Fusion開発者ガイド』の値リスト(LOV)の作成に関する項を参照してください。
LOVのUIヒントを設定します。「デフォルトのリスト・タイプ」が「値リストと共にテキストを入力します」
に設定されていることを確認します。
UIヒントの設定の詳細は、『Oracle Application Development Framework Fusion開発者ガイド』のビュー・オブジェクトのLOV有効属性のユーザー・インタフェース・ヒントの設定方法に関する項を参照してください。
ワークシートで使用されるページ定義のツリー・バインディングとして、ビュー・オブジェクトを公開します。
アプリケーションのweb.xml
ファイルがADFライブラリWebアプリケーション・サポートのフィルタ(<filter-name>ADFLibraryFilter</filter-name>
)を構成することを確認します。
詳細は、D.3項「ADFデスクトップ統合のADFライブラリ・フィルタの構成」を参照してください。
統合Excelワークブックを開きます。
LOV対応の属性にバインドされる表の列の場合は、ModelDrivenColumnComponent
コンポーネント・タイプを列構成に使用してください。表の列がこのように構成されていると、UpdateComponent
およびInsertComponent
のDoubleClickActionSet
プロパティは実行時に無視されます。
図8-7に、ModelDrivenColumnComponent
に設定されたUpdateComponent
プロパティのコンポーネントのタイプを示します。
まだ設定されていない場合は、Workbook.Compatibility.TableComponents.ModelDrivenColumns.InputListOfValuesPickerEnabled
プロパティをTrue
に設定します。
InputListOfValuesPickerEnabled
プロパティの詳細は、A.16項「ADFデスクトップ統合互換性のプロパティ」を参照してください。
(オプション)基底にあるイテレータ上の異なる属性をモデルドリブン・リスト・ピッカーのアクションで設定する必要がある場合、ADF表コンポーネントにRowData.CachedAttributes
を構成します。たとえば、EditCustomers-DT.xlsx
ワークブックでは、「営業担当者」列でModelDrivenColumnComponentサブコンポーネントが公開されているだけでなく、SalesRepId
がRowData.CachedAttribute
の値としても定義されています。
Fusion Webアプリケーション、統合Excelワークブックおよび表の列を構成したら、ワークブックを実行し、LOV対応の属性を公開する表の列をダブルクリックして、モデルドリブン・リスト・ピッカー・ダイアログを開きます。
デフォルトでは、バインディング・パレットでツリー・バインディングをダブルクリックして、ADF表コンポーネントを作成すると、ModelDrivenColumnComponentサブコンポーネントを使用するように、表のすべての列が構成されます。コントロール・タイプがinput_text_lov
のモデルドリブン・リストにバインドされているツリー属性は、実行時に「検索および選択」リスト・ピッカー・ダイアログのレンダリングを自動的にサポートします。つまり、特別な構成は不要です。
ツリー属性がモデルドリブン・リストにバインドされていない、またはカスタム・ピッカーのユーザー・インタフェースが必要な場合は、9.4項「Fusion WebアプリケーションからのWebページの表示」を参照してください。
ADFデスクトップ統合は、統合Excelワークブックでの値リストの作成に使用する次のコンポーネントを提供します。
ADF値リスト
Excelワークシートで値リストを作成するときに、このコンポーネントのプロパティを構成します。
ModelDrivenColumnComponentサブコンポーネント
ADF表コンポーネント列で値リストを作成するときに、このサブコンポーネントのプロパティを構成します。
これら2つのコンポーネントを使用して、統合Excelワークブックに依存値リストを作成できます。依存値リストとは、値リスト・コンポーネント(子の値リスト)で、値は別の値リスト・子(親の値リスト)によって決定されます。
サーバーサイド・リスト・バインディングを、親の値リストの選択された項目が変更になったときに、使用可能な子の値リストの項目が正しく更新されるように定義する必要があります。図8-8は、EditWarehouseInventory-DT.xlsx
ワークブックの2つの画面を使用した例で、ここでは「リージョン」フィールド(親の値リスト)の値が変わると、「国」フィールド(子の値リスト)が変更になります。
表8-1は、以前にリストしたコンポーネントを使用して作成できる依存値リストの実装と、それぞれの実装を完了するための要件を示します。
表8-1に説明する実装には、モデルドリブン・リストが必要なものがあります。モデルドリブン・リストの作成の詳細は、『Oracle Application Development Framework Fusion開発者ガイド』のモデルドリブン・リストの作成方法に関する項を参照してください。
表8-1 依存値リストの構成オプション
構成 | 要件 |
---|---|
ADF値リスト・コンポーネントを使用して、Excelワークシートで親と子の値リストの両方をレンダリングします。 |
ADF値リスト・コンポーネントの両方のインスタンスがリスト・バインディングを参照する必要があります。参照するリスト・バインディングの1つまたは両方をモデルドリブン・リストにすることができます。 両方のリスト・バインディングがモデルドリブン・リストを参照できるのは、基底にあるイテレータに少なくとも1つのデータ行がある場合のみです。実行時に基底のイテレータにデータ行がなく、エンド・ユーザーが親リスト(ADF値リスト・コンポーネントの このシナリオを回避するには、次のオプションのいずれかを選択します。
詳細は、8.5.1項「Excelワークシートでの依存値リストの作成方法」を参照してください。 |
ModelDrivenColumnComponentサブコンポーネントを使用して、ADF表コンポーネント列で親と子の両方の値リストをレンダリングします。 |
親と子の値リスト(ModelDrivenColumnComponentサブコンポーネント)は、どちらもモデルドリブン・リストに関連付けられたツリー・バインディング属性を参照する必要があります。 サーバー・サイド・リストのバインディングの従属性は、同じツリー・ノードにあるリストについてのみ判断されます。次のツリー・ノード・リストのバインディングはサポートされていません。
詳細は、8.5.3項「ADF表コンポーネント列での依存値リストの作成方法」を参照してください。 |
依存値リストを作成する場合は、次の点に注意してください。
親の値リストでの選択が変更されると、ユーザーへの警告なしに子の値リストがリセットされます。
DependsOnList
(またはDependsOnListID
)プロパティで指定されたリストがExcelワークシートのコンポーネントで参照されていないかぎり、依存値リストは機能しません。
再帰的な依存関係が定義されている場合(リストAがリストBに依存し、リストBがリストAに依存)、最初の依存関係(リストAがリストBに依存)が期待される動作をトリガーします。ADFデスクトップ統合は、他の依存関係を誤った構成と見なします。
次のようにして依存関係の連鎖を作成できます。
リストAがリストBに依存
リストBがリストCに依存
このシナリオでは、リストCの変更(祖父母の値リスト)がリストA(孫の値リスト)とリストB(子の値リスト)の両方を更新します。同様のシナリオを作成する場合、親の値リストの選択内容が変わったときに、孫の値リストと子の値リストがどちらも確実にリフレッシュされるようにする必要があります。孫の値リストに2つのバインド変数を指定し、ビュー属性に暗示的な依存関係を設定することにより、これを行います。もうひとつの方法は、モデルドリブン・リストが構成されているそれぞれのビュー属性間に明示的な属性の依存関係を制限することです。たとえば、属性Aが属性Bと属性Cに依存し、属性Bが属性Cに依存するように指定します。
依存値リストのキャッシュの詳細は、16.4項「複数のWebセッション間で使用するための値リストのキャッシング」を参照してください。
ADFデスクトップ統合は、依存値リストに表示される値をキャッシュします。したがって、親リストの選択に対する依存リストの項目の値は、ADF表コンポーネントのすべての行で一貫している必要があります。
日付値を使用するADF値リスト・コンポーネントはサポートされていません。
ADF値リスト・コンポーネントの2つのインスタンスを使用して、Excelワークシートで依存値リストを作成します。
親のADF値リスト・コンポーネントによって参照されるリスト・バインディングを、子のADF値リスト・コンポーネントのListOfValues.DependsOnListID
プロパティの値に指定します。
ADF値リストの詳細は、A.5項「ADF値リスト・コンポーネントのプロパティ」を参照してください。
始める前に:
依存値リストについて理解しておくと役立ちます。詳細は、8.5項「統合Excelワークブックでの依存値リストの作成」を参照してください。
他のADFデスクトップ統合の機能を使用して追加できる機能についても理解しておくと役立ちます。詳細は、8.1.2項「統合Excelワークブックに値リストを追加するための追加の機能」を参照してください。
Excelワークシートで依存値リストを作成するには:
存在しない場合は、必要なリスト・バインディングをページ定義ファイルに追加します。
ページ定義ファイルへのバインディングの追加の詳細は、4.2項「統合Excelワークブックのページ定義ファイルの使用」を参照してください。
統合Excelワークブックを開きます。
8.2項「Excelワークシートでの値リストの作成」の説明に従って、2つのADF値リスト・コンポーネントを統合Excelワークブックに挿入します。
依存値リストで親となるADF値リスト・コンポーネントのプロパティ・インスペクタで、ListOfValues.ListID
プロパティの値を親となるリスト・バインディングに設定します。
依存値リストで子となるADF値リスト・コンポーネントのプロパティ・インスペクタで、次のプロパティを設定します。
「OK」をクリックします。
実行時にはADFデスクトップ統合は、ADF値リスト・コンポーネントの両方のインスタンスをレンダリングします。エンド・ユーザーが親の値リストから値を選択すると、選択された値によって子のリストの値リストが決まります。
図8-10は、依存値リストのCountryが、選択されたRegionリスト値からの状態のみを表示する様子を示しています。
ModelDrivenColumnComponentサブコンポーネントのインスタンスを使用して、ADF表コンポーネント列の依存値リストで両方の値リストを実行時にレンダリングします。
ツリー・バインディング属性を親のModelDrivenColumnComponentサブコンポーネントのValue
プロパティの値に指定します。また、ツリー・バインディング属性を子のModelDrivenColumnComponentサブコンポーネントのValue
プロパティの値に指定します。両方のツリー・バインディング属性が、ツリー・バインディングをページ定義ファイルに追加する前に、モデルドリブン・リストに関連付けられていることを確認してください。また、親と子のモデルドリブン・リスト間の依存性がサーバーで構成されていることも確認します。
Summitサンプル・アプリケーションのEditCustomers-DT.xlsx
ワークブックの「リージョン」および「国」列は、ADF表コンポーネントの依存値リストの実装を示しています。
モデルドリブン・リストの作成の詳細は、『Oracle Application Development Framework Fusion開発者ガイド』のモデルドリブン・リストの作成方法に関する項を参照してください。ページ定義ファイルへのツリー・バインディングの追加の詳細は、4.2項「統合Excelワークブックのページ定義ファイルの使用」を参照してください。
ModelDrivenColumnComponent
サブコンポーネントの詳細は、A.8項「ModelDrivenColumnComponentサブコンポーネントのプロパティ」を参照してください。
始める前に:
依存値リストについて理解しておくと役立ちます。詳細は、8.5項「統合Excelワークブックでの依存値リストの作成」を参照してください。
他のADFデスクトップ統合の機能を使用して追加できる機能についても理解しておくと役立ちます。詳細は、8.1.2項「統合Excelワークブックに値リストを追加するための追加の機能」を参照してください。
ADF表コンポーネントに依存値リストを作成するには:
統合Excelワークブックを開きます。
存在しない場合は、ADF表コンポーネントを挿入します。
詳細は、7.3項「ExcelワークシートへのADF表コンポーネントの挿入」を参照してください。
Columnsの入力フィールドの横にある参照(...)アイコンをクリックすることにより、ADF表コンポーネントのプロパティ・インスペクタで、「列の編集」ダイアログを起動します。
新しい列を追加(または既存の列を変更)して親の値リストとします。列のサブコンポーネント・タイプとしてModelDrivenColumnComponentを指定します。値リストの作成の詳細は、8.3項「ADF表コンポーネント列での値リストの作成」を参照してください。
新しい列を追加(または既存の列を変更)して子の値リストとします。列のサブコンポーネント・タイプとしてModelDrivenColumnComponentを指定します。値リストの作成の詳細は、8.3項「ADF表コンポーネント列での値リストの作成」を参照してください。
「OK」をクリックします。
実行時に、ADF表コンポーネントは、ModelDrivenColumnComponentサブコンポーネントの両方のインスタンスを、これらのインスタンスを表示するよう構成した列にレンダリングします。エンド・ユーザーが親の値リストから値を選択すると、選択された値によって子のリストの値リストが決まります。
図8-11は、Summitサンプル・アプリケーションのEditCustomers-DT.xlsx
ワークブックの例を示しています(ここでは、「リージョン」列の値リストでエンド・ユーザーが選択する値が、「国」列の値リストに表示されるサブカテゴリの対応する値となります)。
注意: エンド・ユーザーが親リストの選択を変更すると、子のリスト項目が現在の行のみで変更されます。 |