Share via


Microsoft InfoPath を使用して外部リスト フォームをカスタマイズする

最終更新日: 2010年4月16日

適用対象: SharePoint Server 2010

Microsoft Business Connectivity Services (BCS) は、外部リストから、アイテムを表示、作成、および編集するための既定の SharePoint フォームを自動的に生成します。しかし、これらの基本的な Web パーツフォームでのカスタマイズ オプションは限定されています。複雑なカスタマイズを実行する、あるいはフォームに宣言ルールやビジネス ロジックを追加する場合は、Microsoft InfoPath 2010 フォームを使用して、外部リストの既定の SharePoint CreateViewUpdate フォームを置換することができます。

InfoPath フォームで既定の SharePoint フォームを置換するには

  1. ブラウザーで、外部リストに移動します。

  2. Server リボンで、[一覧の編集] をクリックします。外部リストが Microsoft SharePoint Designer 2010 で開きます。

  3. リボンで、図 1 に示すように、[InfoPath でフォームをデザイン] ボタンをクリックします。

    図 1. InfoPath フォームで既定の SharePoint フォームを置換する

    InfoPath でフォームをデザインする

  4. ユーザー設定タイプなどのアイテムで、必要に応じてフォームをデザインします。簡単なフィールドのためのコントロールは自動生成されます。しかし、複合型の場合は、ツールボックスからコントロールを適宜ドラッグして使用する必要があります。

  5. 作業を完了したら、[ファイル] メニューから [クイック発行] をクリックして、サーバーにフォームを再発行します。

    これで、外部リストに移動して、アイテムを作成あるいは表示することができます。表示されるフォームは、既定の SharePoint フォームではなく、新しい InfoPath フォームです。

フォームの外観のカスタマイズ

InfoPath を使用して、外部リスト フォームの表示と動作をカスタマイズすることができます。「InfoPath 2010 - Customize a SharePoint List Form (英語)」のビデオでは、InfoPath 製品チームのプログラム マネージャーである Daniel Broekman が、InfoPath 2010 を使用してすばやく SharePoint リスト フォームをカスタマイズする方法を説明しています。ビデオと同じ手順に従えば、InfoPath フォームで既定の SharePoint 外部リスト フォームを置換して、表示と動作を変更するためにカスタマイズすることができます。

フォームへの宣言ルールあるいはビジネス ロジックの追加

コードを作成せずに、InfoPath によって、フォームに宣言ルールあるいはビジネス ロジックを追加することができます。たとえば、郵便番号の入力を 5 桁の数字 (12345) に制限したり、あるいはユーザーに特定の形式で電話番号を入力させたりするためにルールを作成することができます。「InfoPath 2010 - Customize a SharePoint List Form」は、フォームに宣言ルールとビジネス ロジックを追加する方法についても説明しています。

複合型のレンダリング

SharePoint フォームを InfoPath 2010 フォームで置換するのにもっとも役立つシナリオは、外部システムで定義される複合型をレンダリングし編集するときです。たとえば、Address が、外部コンテンツ タイプの SpecificFinder によって返されるフィールドであるとします。この Address フィールドは、図 2 で示すように、複数のサブタイプを含む外部システムでの複合型である可能性があります。

図 2. SharePoint Designer 2010 における複合型

SharePoint Designer における複合型

SharePoint Designer で表示される警告に注意してください。Microsoft Business Connectivity Services (BCS) が、SpecificFinder の戻り値パラメーターにこの種類の複合型を検出した場合は、通常の SharePoint 外部リスト フォームのこのフィールドを無視します。図 3 は、この Address 複合型を含む外部リストの既定の [アイテムの表示] ページを示します。Address フィールドが無視されて、フォームに表示されていない点に注意してください。また、Address が外部システムでの Create あるいは Update 操作のための必須フィールドの場合、顧客アイテムを作成あるいは編集することはできません。

図 3. 複合型を含む外部リストの既定の [アイテムの表示] ページ

複合型が含まれるアイテムの表示

このような場合、フォームを InfoPath に変換することができます。SpecificFinder が、複合型 (この例では Address) を持っているため、Business Connectivity Services は、必須フィールドとコントロールのすべてを持つフォームを作成するわけではありません。その代わりに、図 4 に示すように、フォームにフィールドを追加しない空白の InfoPath フォームを作成します。

図 4. 空白の InfoPath フォーム

空白の InfoPath フォーム

この問題を解決するには、作業ウィンドウの [フィールド] セクションから [dataFields] フィールドをドラッグします。しかし、これは、複合型のサブタイプのすべてが InfoPath で使用可能なコントロールを使用して表示できる場合に限り、実行できます。たとえば、Address の例では、そのすべてのサブタイプは [テキスト] フィールド コントロールを使用して表示することができます。

複合型 (あるいはユーザー設定型)、またはそのサブタイプの 1 つが、InfoPath で使用可能なコントロールのどれを使用しても表示できない場合は、そのフィールドを表示するために、カスタム InfoPath コントロールをデザインして、それを使用する必要があります。カスタム InfoPath コントロールを追加した場合は、サーバーにフォームを発行することはできません。

フォームをデザインした後で、フォームを保存して、現在の場所にクイック発行をすることができます。外部リスト フォームが開いて、すべてのフィールドを表示します。図 5 は、InfoPath に変換された後の、外部リスト View Item フォームを示します。ここで必要な操作は、フォームのデザイン領域に [dataFields] コントロールをドラッグするだけです。

図 5. InfoPath に変換された外部リスト View Item フォーム

InfoPath で拡大されたアイテム フォームの表示

Address フィールドとそのすべてのサブタイプが表示される点に注意してください。外部コンテンツ タイプが Create と Update 操作を定義している場合は、外部リスト フォームを使用して、顧客アイテムを作成および編集することができます。

外部アイテムピッカー コントロールの埋め込み

顧客のリストから John という顧客を選ぶなど、ユーザーが外部アイテムを選択する必要があるシナリオでは、InfoPath 2010 は、外部アイテム ピッカーのためのピッカーをフォームに埋め込むためのコントロールを提供します。外部アイテム ピッカーは、サーバーとリッチ クライアント Microsoft Office アプリケーションで、外部アイテムのための選択および解決機能を提供します。

外部キーを含む外部コンテンツ タイプのための外部リスト フォームと BDC メタデータ ストアで、外部コンテンツ タイプのための関連付けを設定した場合、Business Connectivity Services はそのフィールドのためのフォームに選択コントロールを自動的に追加します。たとえば、顧客と発注のシナリオを考えてください。外部コンテンツ タイプと関連付けは既に設定済みとします。発注外部リスト フォームを InfoPath にアップサイズした場合、Business Connectivity Services は、既定で発注フォームに CustomerID フィールドのための外部アイテム ピッカー コントロールを配置します。これにより、ユーザーは、発注に関する作業をするときに、必要な顧客を簡単に検索できるようになります。

しかし、SpecificFinder が 1 つあるいは複数の複合型を持っているために、自動生成された InfoPath フォームが空白の場合、リボンから外部アイテム ピッカー コントロールをドラッグして、必要なプロパティを設定する必要があります。詳細については、「[方法] InfoPath フォームに外部アイテム ピッカー コントロールを埋め込む」を参照してください。

フォームのために複数のビューを作成する

外部リスト InfoPath フォームは、複数のビューを持つことができます。これは、外部システムで、作成後のフィールドが更新できないライト ワンスのシナリオで特に役立ちます。このような場合、Create 操作のためのビューと、Update 操作のための読み取り専用ビューの 2 つのビューを作成することができます。フォームの適切なビューを表示するために、CreateEdit のための .aspx ページを更新することができます。

分離コードあるいはルールの追加

最後に、InfoPath フォームに分離コードあるいはルールを追加することができます。InfoPath フォームに分離コードを追加する方法の詳細については、「InfoPath 2010 Developer Reference for Form Templates」を参照してください。InfoPath フォームにルールを追加する方法については、InfoPath 2010 ヘルプを参照してください。データ入力で追加のビジネス ロジックを実行するために分離コードあるいはルールを追加することができます。たとえば、入力された郵便番号がアメリカの有効な郵便番号であることを確認したり、国 / 地域コードが有効であることを確認したりするために、分離コードあるいはルールを追加することができます。外部システムあるいは BDC メタデータ ストアにアクセスするために、コードで Business Connectivity Services オブジェクト モデルを使用することもできます。分離コードを含むフォームは、クライアントでの完全信頼と、管理者権限を必要とします。

重要重要
  • Business Connectivity Services が提供する、自動生成された InfoPath フォームから外部リスト InfoPath フォームを作成する作業を開始する必要があります。

  • 外部リスト フォームは、その他のデータ ソースに接続することはできません。すなわち、フォーム内に 2 次的データ接続を含めることはできません。

  • InfoPath に外部リスト フォームを変換したとき、SpecificFinder が複合型を持っている場合は、空白ビューが生成されます。作業ウィンドウから [dataFields] コントロールをドラッグする必要があります。

  • 複合型 (あるいはユーザー設定型)、またはそのサブタイプの 1 つが、Microsoft InfoPath で使用可能なコントロールのどれを使用しても表示できない場合は、そのフィールドを表示するために、カスタム InfoPath コントロールをデザインして、それを使用する必要があります。

  • コードを作成せずに、InfoPath によって、フォームに宣言ルールあるいはビジネス ロジックを追加することができます。

  • データ入力に追加のビジネス ロジックを含めるために、InfoPath フォームに分離コードを追加することができます。外部システムあるいは BDC メタデータ ストアにアクセスするために、コードで Business Connectivity Services オブジェクト モデルを使用することもできます。

  • サーバーサイド外部リスト .aspx ページは、ユーザー設定 InfoPath フォームを指定することができます。しかし、このようなフォームは、外部リストがオフラインになってもクライアントでレンダリングされません。

  • 外部コンテンツ タイプと外部リスト フォームのバージョンが不一致の場合、オフラインになったときに、フォームはサーバーおよびクライアントで機能しない可能性があります。この場合、サーバーにフォームを再発行することが必要な場合もあります。