ビューのデータ・バインディング

ビューをビジネス・オブジェクトにバインディングすることで、データとそのデータ用のユーザー・インターフェースとの間の関連が作成されます。

ビジネス・オブジェクトとビューを関連付けるには、ビューをビジネス・オブジェクトにバインドします。 ビュー定義でバインディング・タイプを宣言するときに、ビューをデータにバインドする必要があります。 バインディングによって提供されるデータがないと、ビューが正しく機能しない場合があります。 ビュー定義でバインディング・タイプを宣言していない場合、データ・バインディングはオプションです。

例えば、Address というビジネス・オブジェクトがあるとします。 そのビジネス・オブジェクトの 1 つ以上のパラメーターを表示するには、ビューを作成します。 次に、そのビューに Address ビジネス・オブジェクトを変数として追加します。 これで、Address ビジネス・オブジェクトがビューに関連付けられました。 ビジネス・オブジェクトを複数のビューに関連付けることはできますが、ビューに含めることができるバインディングは 1 つだけです。 例えば、Address ビジネス・オブジェクトに、すべての住所情報を表示するビューを関連付けることができます。 また、郵便番号のみを表示する別のビューを関連付けることもできます。
ヒント: あるいは、既存のビジネス・オブジェクトから直接ビューを作成することもできます。 新規ビューのビジネス・データは、作成元のビジネス・オブジェクトにバインドされます。 再使用可能ビューの開発を参照してください。

ビジネス・オブジェクトにビューを関連付けたら、ビジネス・オブジェクトのパラメーターをレイアウトにドロップできます。 これらのパラメーターはパレットで変数として使用できます。 変数のデータ型に関連付けられているビューがある場合は、レイアウトにそのビューが表示されます。 例えば、ストリングをレイアウトにドロップした場合は、ストリングにバインドされているテキスト・ビューが表示されます。 変数がビューに関連付けられているビジネス・オブジェクトである場合は、そのビューを表示できます。 ビジネス・オブジェクトに関連付けられているビューがない場合は、プレースホルダー・メッセージが表示されます。

変数がリストの場合、レイアウトにドロップする内容によって、設計者がレイアウトに追加するビューが決まります。 Designer が選択したビューは変更できます。
  • 変数がストリング・ビジネス・オブジェクトや 1 つのパラメーター・ビジネス・オブジェクトなどのプリミティブ・データ型である場合、設計者は選択ビューを追加します。
  • 変数が複数のパラメーターを持つビジネス・オブジェクトである場合、デザイナーは、パラメーターごとに列を持つテーブル・ビューを追加します。 各列には、変数のデータ型に関連付けられているビューが含まれています。
  • currentItem 変数をレイアウトにドロップすると、デザイナーは、変数のデータ・タイプに関連付けられたビューを含む垂直セクションを追加します。 実行時には、セクションの内容がリスト内の項目ごとに繰り返されます。
  • listSelected 変数をレイアウトにドロップすると、その変数のデータ型に関連付けられたビューが設計者によって追加されます。 実行時には、ビューにリスト内の選択項目のデータが含まれます。 例えば、listBO[] にバインドされている選択ビューと、listBO.listSelected.myItem にバインドされている出力テキスト・ビューがあるとします。 実行時に、ユーザーは選択ビューの 3 番目の項目を選択します。 出力テキスト・ビューに 3 番目の myItem ストリングが表示されます。

コンテンツ・ボックス項目を含んだビュー定義があり、そのビューのインスタンスがリストにバインドされている場合は、コンテンツ・ボックス内のコンテンツがリスト項目ごとに繰り返されます。 また、同じくリストそのものまたはリストのエレメントにバインドされているビューが、このコンテンツ・ボックスに含まれていることが考えられます。 このような配置の場合は、包含している (外側にある) ビューのリストによって、繰り返しが制御されます。 包含されている (内側にある) ビューのリストはコンテンツを提供します。 例えば、あるセクションが名前のリストにバインドされているとします。 このセクションのコンテンツ・ボックスには、その名前リストの currentItem にバインドされているテキスト・ビューが含まれています。 実行時には、リスト内の名前ごとにこのセクションが繰り返されます。 それぞれの繰り返しセクションには 1 つのフィールドが含まれます。 最初のセクションのフィールドには最初の名前が含まれます。 2 番目のセクションのフィールドには 2 番目の名前が含まれ、以下同様となります。

外側にあるビューと内側にあるビューをそれぞれ別のリストにバインドすることができます。 ただし、内側にあるビューを別のリストの currentItem にバインドする場合は、2 つのリストに同じ数の項目が含まれている必要があります。 2 つのリストに同じ数の項目がない場合は、ユーザーに対してメッセージが表示されます。 具体的なメッセージは、内側にあるリストに含まれている項目のほうが多いか少ないかによって異なります。 外側にあるリストのほうが項目が多い場合は、繰り返されているコンテンツで、いくつかの強調表示されたビューがユーザーに対して示されます。 強調表示されるのは、データが含まれていないためです。 例えば、outerList[] に 3 つの項目があり、innerList[] に 2 つの項目があるとします。 innerList.currentItem にバインドされているビューは 3 回繰り返されますが、データが含まれているのは最初の 2 つのみです。 実行時に、外側にあるリストのほうが項目が少ない場合は、内側にあるリストの超過項目を表示する場所がないため、それらの項目をユーザーに対して表示することはできません。 例えば、outerList[] に 4 つの項目があり、innerList[] に 5 つの項目があるとします。 innerList.currentitem にバインドされているビューは 4 回繰り返されます。 ユーザーは、5 番目の innerList[] 項目のビューを表示することはできません。