データ バインド Web パーツ コントロールの作成
更新 : 2007 年 11 月
WebPart 基本クラスから継承することにより、通常のデータ バインド サーバー コントロールに Web パーツ機能を持たせることができます。Web パーツ アプリケーションでは、エンド ユーザーがサーバー コントロールの動作とユーザー インターフェイス (UI) を変更 (パーソナル化) して、その後のブラウザ セッション用に、独自の設定を長期ストレージに保存できます。ユーザーは、コントロールを追加または削除したり、コントロールのプロパティや外観を編集したり、ページ レイアウトを再配置したり、コントロールの設定をインポートまたはエクスポートしたり、コントロール間でデータを共有できるように接続を構成したりすることにより、ページの外観と操作性を大幅に変更できます。Web パーツ アプリケーションの詳細については、「ASP.NET Web パーツ コントロール」のトピックを参照してください。このトピックでは、Web パーツ アプリケーションでカスタムのデータ バインド WebPart コントロール (または任意のサーバー コントロール) を使用するための必要条件と、カスタム コントロールを作成するときに実装またはオーバーライドすると便利な WebPart 基本クラスのいくつかのメンバの概要を説明します。これらのメンバの一部をオーバーライドおよび実装する例については、「データ バインド Web パーツ コントロールの例」を参照してください。
Web パーツ コントロールの使用に必須の要素
Web パーツ コントロールを単独で実行した場合は、その Web パーツ機能を保持できません。Web アプリケーションの WebPart コントロールを Web アプリケーションに必須の他の要素なしで実行すると、そのコントロールは単純に Web パーツ機能を失い、通常のサーバー コントロールとして機能します。Web パーツ機能を持つカスタム WebPart コントロールを使用する前に用意する必要がある必須の要素を次の一覧に示します。
WebPartManager コントロール。このコントロールは、Web パーツ機能を提供するページごとに必要です。詳細については、「Web パーツ コントロール セットの概要」を参照してください。
WebPartZoneBase ゾーン コントロール。Web ページには、WebPart コントロールを格納するための、この抽象クラスから派生したゾーン (WebPartZone コントロールなど) が必要です。詳細については、「Web パーツ コントロール セットの概要」を参照してください。
Windows 認証またはフォーム認証を使用して個別のユーザーを認識できる ASP.NET Web サイト。仮想ディレクトリまたはサイトの作成方法の詳細については、「方法 : IIS 5.0 および 6.0 内で仮想ディレクトリを作成および構成する」または「方法 : IIS 6.0 でローカル ASP.NET Web サイトを作成および構成する」を参照してください。
コントロールのユーザー設定を格納するための、構成済みのパーソナル化プロバイダおよびデータベース。Web パーツのパーソナル化は既定で有効になっており、Microsoft SQL Server Express (SSE) Edition に付属の SQL パーソナル化プロバイダ (SqlPersonalizationProvider) を使用してパーソナル化データを格納します。このチュートリアルでは、SSE と既定の SQL プロバイダを使用します。SSE をインストール済みである場合、構成は必要ありません。SSE は、インストールのオプション部分として Microsoft Visual Studio 2005 で使用するか、または Microsoft.com から無料でダウンロードできます。Microsoft SQL Server のいずれかのフル バージョンを使用するには、ASP.NET アプリケーション サービス データベースをインストールして設定し、そのデータベースに接続する SQL パーソナル化プロバイダを設定する必要があります。詳細については、「SQL Server 向けアプリケーション サービス データベースの作成と構成」を参照してください。また、SQL データベース以外のデータベースやストレージ ソリューションで使用するカスタム プロバイダを作成して設定することもできます。詳細とコード例については、「メンバシップ プロバイダの実装」を参照してください。
よくオーバーライドまたは使用される WebPart のメンバ
Web パーツ アプリケーションでは任意の種類のサーバー コントロールを使用できますが、カスタム WebPart コントロールを作成することの利点もあります (詳細については、「Web パーツ アプリケーションでの ASP.NET サーバー コントロールの使用」を参照してください)。WebPart 基本クラスから継承する場合、実装しなければならない必須のメンバはありません。しかし、通常よく使用またはオーバーライドされるメンバはいくつかあります。これらのメンバを、次の表に示します。WebPart コントロールとして実装されるデータ バインド サーバー コントロールの完全な例については、「データ バインド Web パーツ コントロールの例」を参照してください。よく使用されるメンバの一部の概要を次の表に示します。
メンバ |
説明 |
---|---|
WebPart |
このコンストラクタは、通常、WebPart コントロールの外観および動作を決定する一部のプロパティ (Part クラスから継承される各種プロパティや、AllowEdit プロパティおよび AllowLayoutChange プロパティなどの動作プロパティ) の既定値を設定するために使用します。 |
動作プロパティ |
これには、AllowClose、AllowConnect、AllowEdit、AllowMinimize、AllowLayoutChange、AllowZoneChange など、クラスのさまざまな "許可" プロパティが含まれます。開発者は、コンストラクタでこれらのプロパティに既定値を単純に割り当てるだけでなく、たとえばコントロールを使用するユーザーや開発者がコントロールを閉じられないようにするなど、プロパティを完全に制御できます。 |
WebPart クラスから継承するときは、カスタム コントロールの UI を用意する必要があります。そのための非常に効率的な方法は、CreateChildControls メソッドをオーバーライドし、このメソッド内で、カスタム コントロールの UI を構成するその他のサーバー コントロールを追加することです。これらのコントロールを追加するときは、コントロール用のカスタム イベント ハンドラを作成したり、コントロールをデータ ソースにバインドしたりするなどの追加タスクの実行が必要な場合もあります。 |
|
レンダリング メソッド |
RenderControl や RenderContents などの一般的なレンダリング メソッドをオーバーライドする必要がある場合もあります。これらのメソッドでは、レンダリングを完全にオーバーライドするか、または、最初に基本メソッドを呼び出してからレンダリングの一部の機能を変更できます。 |
標準動詞 (Close や Minimize など) を持つコントロールの動詞メニューに表示されるカスタム WebPartVerb オブジェクトを作成する場合は、それらをコントロールの Verbs コレクションに追加する必要があります。 |
|
カスタム EditorPart コントロールを作成する場合、ユーザーがコントロールのカスタム プロパティを編集できるようにするためには、CreateEditorParts メソッドをオーバーライドして、それらをコントロールに関連付ける必要があります。例については、IWebEditable インターフェイスに関するトピックを参照してください。 |
|
WebPart コントロールでカスタム プロパティを作成するとき、ユーザーがそれらのプロパティを標準 WebPart コントロールのプロパティと同様に編集およびパーソナル化して独自の設定を保存できるようにする場合がよくあります。ユーザーがパーソナル化できるようにするすべてのプロパティに、Personalizable メタデータを追加します。 |
データ バインド WebPart コントロールのサンプル
Northwind データベースにバインドする GridView コントロールを作成し、このコントロールを WebPart コントロールとして実装する方法を示す完全なコード例については、「データ バインド Web パーツ コントロールの例」を参照してください。