WebPartManager イベント


関連項目
WebPartManager クラスSystem.Web.UI.WebControls.WebParts 名前空間
WebPartManagerInternals
その他の技術情報
ASP.NET Web パーツ ページWebPartManager クラス
アセンブリ: System.Web (system.web.dll 内)

<BindableAttribute(False)> _ Public Class WebPartManager Inherits Control Implements INamingContainer, IPersonalizable
[BindableAttribute(false)] public ref class WebPartManager : public Control, INamingContainer, IPersonalizable

WebPartManager コントロールは、Web パーツ アプリケーションのハブまたはコントロール センターとして動作します。WebPartManager コントロールのインスタンスは、Web パーツ コントロールを使用するページごとに 1 つだけ存在している必要があります。Web パーツ アプリケーションの大部分の要素と同様に、WebPartManager コントロールは認証されたユーザーでのみ動作します。さらに、その機能のほとんどすべてが、WebZone クラスから継承した Web パーツ ゾーン内に存在するサーバー コントロールで動作します。これらのゾーン外部のページ上に存在するサーバー コントロールは、Web パーツ機能をほとんど持たないか、WebPartManager コントロールとの対話もほとんど実行できません。
WebPartManager コントロールは、ページ上の Web パーツ機能のハブとして、次の表に示すような種類のタスクを実行します。
WebPart のコントロール、接続、ゾーンなどを含め、Web パーツ機能を提供するページ上にある多様なコントロールを追跡します。 | |
ユーザーが、ページ上の別の位置にコントロールを移動したり、コントロールの外観、プロパティ、および動作を編集するビューを起動したりできるようにします。それぞれのページのユーザー固有のパーソナル化設定を維持します。 | |
ユーザーがページ レイアウトの変更やコントロールの編集などの特定のタスクを実行できるように、ページの特殊化されたさまざまなビューを切り替えます。 | |
コントロールの追加、移動、接続、または削除を行うときなどの Web パーツ コントロールの有効期間イベントに対する処理を開発者が定義、発生、および有効化します。 | |
WebPart コントロールのプロパティの状態を格納する XML ストリームをエクスポートし、ユーザーがそのファイルをインポートして、他のページまたはサイトの複合コントロールを簡単にパーソナル化できるようにします。 |
WebPartManager クラスには、数多くのプロパティ セットがあります。WebPartManager は他のコントロールを追跡する役割を果たすために、Web パーツ コントロールまたはその他の特別な Web パーツ オブジェクトのコレクションを参照する数多くのプロパティを備えています。AvailableTransformers、Connections、Controls、DisplayModes、DynamicConnections、SupportedDisplayModes、WebParts、および Zones の各プロパティはすべて、WebPartManager コントロールが追跡やその他の管理タスクのために使用するコレクションです。
プロパティの別のグループには、Web パーツ アプリケーションで発生する特定の状況で使用する、カスタマイズ可能な警告が含まれます。これらのプロパティには、CloseProviderWarning、DeleteWarning、ExportSensitiveDataWarning などがあります。
WebPartManager クラスは、多くの Web サーバー コントロールで使用される、基本継承プロパティの一部をオーバーライドします。これらのプロパティには、EnableTheming、SkinID、Visible などがあります。
最後に、アプリケーションの現在の状態にアクセスする場合に役立つプロパティのグループがあります。DisplayMode プロパティは、ページの現在の表示モードを示します。EnableClientScript プロパティは、コントロールにおいてクライアント側のスクリプトの表示が許可されているかどうかを示します。これは、ユーザーがブラウザにさまざまな機能を持たせたり、スクリプト機能をオフにする場合に有効です。Internals プロパティは、機能の拡張に使用される多くの重要な Web パーツ メソッドに対する呼び出しを含む、ユーティリティ クラスを参照する場合に役立ちます。別個のクラス (WebPartManagerInternals クラス) のこれらのメソッドに対する呼び出しを隠ぺいすることにより、WebPartManager クラス固有の API が簡潔になります。Personalization プロパティは、ユーザーのパーソナル化設定を格納し、そのデータを永続的なストレージに保持するパーソナル化オブジェクトへのアクセスを提供します。SelectedWebPart プロパティは、ページ上でユーザーまたはアプリケーションが現在選択している WebPart コントロールを示します。System.Web.UI.WebControls.WebParts.IPersonalizable.IsDirty プロパティは、WebPart コントロールのカスタムのパーソナル化データが変更されたかどうかを示します。
WebPartManager コントロールには、5 つの組み込み表示モード、つまり Web ページのビューが用意されています。開発者は、WebZone クラスや ToolZone クラスなどの型を拡張してカスタム表示モードを作成することにより、この機能を拡張できます。指定された表示モードに対応する適切な種類のコントロールがページ上に存在する場合、ユーザーはページをさまざまな表示モードに切り替えることができます。
標準の表示モードは、WebPartManager クラスのパブリック フィールドで表されます。各フィールドおよびそれらが参照する表示モードの概要を次の表に示します。上で説明したように、ページの現在の表示モードは常に DisplayMode プロパティで参照されます。また、特定のページ上で使用可能な表示モードのセットは、ページ上にあるゾーンの種類を指定して、SupportedDisplayModes プロパティに格納されます。
BrowseDisplayMode | |
DesignDisplayMode | |
EditDisplayMode | 編集ユーザー インターフェイス (UI: User Interface) が表示されるビュー。ユーザーが、通常のブラウズ モードに表示されるコントロールの外観、プロパティ、および動作を編集できます。 |
CatalogDisplayMode | カタログ UI が表示されるビュー。ユーザーは、使用可能なコントロールのカタログからページにコントロールを追加できます。 |
ConnectDisplayMode | 接続 UI が表示されるビュー。ユーザーは、コントロール間の接続に対して接続、管理、または接続の解除を行うことができます。 |
また、WebPartManager コントロールには、Web パーツのページおよびコントロールの有効期間で重要となる多くのイベントも用意されています。これらのイベントにより、Web パーツ コントロールの動作に対してプログラムによる精度の高い制御を行うことができます。大部分のメソッドが WebPart コントロール (または WebPart コントロールとして動作できるように WebPartZoneBase ゾーンに配置されたその他のサーバー コントロールまたはユーザー コントロール) に直接関係します。ただし、ページの状態またはページ上の接続に関係するイベントはわずかです。利用できるイベントとその目的を次の表に示します。
![]() |
---|
次の表における "コントロール" はすべて、ゾーン内に存在し、実行時に GenericWebPart オブジェクトによってラップされる、WebPart コントロールまたはサーバー コントロールを表します。 |
AuthorizeWebPart | |
ConnectionsActivated | |
ConnectionsActivating | |
DisplayModeChanged | |
DisplayModeChanging | |
SelectedWebPartChanged | |
SelectedWebPartChanging | |
WebPartAdded | |
WebPartAdding | |
WebPartClosed | |
WebPartClosing | |
WebPartDeleted | プログラムによって作成されたか、カタログから追加されたダイナミック コントロールのインスタンスが、完全に削除された後に発生します。 |
WebPartDeleting | |
WebPartMoved | |
WebPartMoving | |
WebPartsConnected | |
WebPartsConnecting | |
WebPartsDisconnected | |
WebPartsDisconnecting |
WebPartManager コントロールは、Web パーツ ページを管理するための多数のメソッドを備えています。ここに示されていない数多くの一連のメソッドに、OnEventName の形式で名前が付けられたメソッドがあります。通常、これらのメソッドは関連するイベントを発生させ、そのイベントに WebPartEventHandler 型のハンドラを提供します。これらのメソッドの大部分は、開発者が WebPartManager クラスから継承してオーバーライドできます。また、ページの開発者はこれらのメソッドに関連付けられたイベントのカスタム ハンドラを用意できます。たとえば、WebPartAdded イベントの場合、ページの開発者は Web ページのマークアップの <asp:webpartmanager> 要素に OnWebPartAdded 属性を追加し、属性にカスタム メソッド名を割り当てることにより、そのイベント用のカスタム ハンドリングを用意できます。この属性は OnWebPartAdded メソッドに対応し、イベント処理のこの基本的なパターンは、大部分の Web パーツ イベントおよびそれに関連するメソッドに対して有効です。
さらに、WebPartManager コントロールは、WebPart コントロール (および WebPart コントロールとして使用されるサーバー コントロールまたはユーザー コントロール) を管理するタスクだけを対象としたメソッドを備えています。これらのメソッドには、AddWebPart、AuthorizeWebPart、CloseWebPart、CopyWebPart、CreateWebPart、DeleteWebPart、DisconnectWebPart、BeginWebPartEditing、EndWebPartEditing、ExportWebPart、GetGenericWebPart、ImportWebPart、IsAuthorized、および MoveWebPart があります。
その他の一連のメソッドは、接続に特化しています。このメソッドには、ActivateConnections、BeginWebPartConnecting、CanConnectWebParts、ConnectWebParts、CreateAvailableTransformers、DisconnectWebPart、DisconnectWebParts、EndWebPartConnecting、GetConsumerConnectionPoints、GetProviderConnectionPoints などがあります。
最後に、一部の WebPartManager メソッドは、パーソナル化の機能に特化しています。これらには、CreatePersonalization、LoadControlState、SaveCustomPersonalizationState、SetPersonalizationDirty、System.Web.UI.WebControls.WebParts.IPersonalizable.Load、System.Web.UI.WebControls.WebParts.IPersonalizable.Save、および SaveControlState があります。
Internals プロパティを通じてアクセスできるその他の WebPartManager メソッドの詳細については、WebPartManagerInternals クラスのドキュメントを参照してください。
継承時の注意 WebPartManager コントロールは、拡張できるようにデザインされています。このコントロールは Web パーツ アプリケーションのハブとして機能します。したがって、Web パーツ コントロール セットの一部の特定の型またはコントロールを拡張する場合、通常は WebPartManager クラスの拡張も必要になります。これは、多くの場合このクラスが、Web パーツ アプリケーションのコンテキストでカスタム型を機能させるために必要な、いくつかのプロパティまたはメソッドを備えているためです。Web パーツの参照ドキュメント (System.Web.UI.WebControls.WebParts のトピックを参照) では、Web パーツ型の拡張方法を説明するときに、しばしば WebPartManager クラスを拡張するために必要な作業についても説明され、拡張する方法のコード例が示されています。
WebPartManager コントロールを、宣言で使用する方法およびプログラムで使用する方法の両方のコード例を次に示します。
-
接続できる 2 つのカスタム WebPart コントロール、および <asp:webpartmanager> 要素が含まれた Web ページ。
-
2 つのカスタム WebPart コントロール、および 1 つのカスタム インターフェイスが含まれたソース コード ファイル。
ユーザー コントロールには、ページ上にある Web パーツ コントロールを指定すると、そのページで使用可能な表示モードが表示されるドロップダウンリスト コントロールがあります。このコード例の Web ページでは、このユーザー コントロールはページのマークアップにある WebPartManager 要素のすぐ下に宣言されています。また、Web ページの先頭近くには、コントロールを登録する Register ディレクティブがあります。表示モードの詳細、およびこのコントロールのソース コードの説明については、「チュートリアル : Web パーツ ページでの表示モードの変更」を参照してください。
<%@ control language="vb" classname="DisplayModeMenuVB"%> <script runat="server"> ' Use a field to reference the current WebPartManager. Dim _manager As WebPartManager Sub Page_Init(ByVal sender As Object, ByVal e As EventArgs) AddHandler Page.InitComplete, AddressOf InitComplete End Sub Sub InitComplete(ByVal sender As Object, ByVal e As System.EventArgs) _manager = WebPartManager.GetCurrentWebPartManager(Page) Dim browseModeName As String = WebPartManager.BrowseDisplayMode.Name ' Fill the dropdown with the names of supported display modes. Dim mode As WebPartDisplayMode For Each mode In _manager.SupportedDisplayModes Dim modeName As String = mode.Name ' Make sure a mode is enabled before adding it. If mode.IsEnabled(_manager) Then Dim item As New ListItem(modeName, modeName) DisplayModeDropdown.Items.Add(item) End If Next mode ' If shared scope is allowed for this user, display the scope-switching ' UI and select the appropriate radio button for the current user scope. If _manager.Personalization.CanEnterSharedScope Then Panel2.Visible = True If _manager.Personalization.Scope = PersonalizationScope.User Then RadioButton1.Checked = True Else RadioButton2.Checked = True End If End If End Sub ' Change the page to the selected display mode. Sub DisplayModeDropdown_SelectedIndexChanged(ByVal sender As Object, _ ByVal e As EventArgs) Dim selectedMode As String = DisplayModeDropdown.SelectedValue Dim mode As WebPartDisplayMode = _ _manager.SupportedDisplayModes(selectedMode) If Not (mode Is Nothing) Then _manager.DisplayMode = mode End If End Sub ' Set the selected item equal to the current display mode. Sub Page_PreRender(ByVal sender As Object, ByVal e As EventArgs) Dim items As ListItemCollection = DisplayModeDropdown.Items Dim selectedIndex As Integer = _ items.IndexOf(items.FindByText(_manager.DisplayMode.Name)) DisplayModeDropdown.SelectedIndex = selectedIndex End Sub ' Reset all of a user's personalization data for the page. Protected Sub LinkButton1_Click(ByVal sender As Object, _ ByVal e As EventArgs) _manager.Personalization.ResetPersonalizationState() End Sub ' If not in User personalization scope, toggle into it. Protected Sub RadioButton1_CheckedChanged(ByVal sender As Object, _ ByVal e As EventArgs) If _manager.Personalization.Scope = PersonalizationScope.Shared Then _manager.Personalization.ToggleScope() End If End Sub ' If not in Shared scope, and if user is allowed, toggle the scope. Protected Sub RadioButton2_CheckedChanged(ByVal sender As Object, _ ByVal e As EventArgs) If _manager.Personalization.CanEnterSharedScope AndAlso _ _manager.Personalization.Scope = PersonalizationScope.User Then _manager.Personalization.ToggleScope() End If End Sub </script> <div> <asp:Panel ID="Panel1" runat="server" Borderwidth="1" Width="230" BackColor="lightgray" Font-Names="Verdana, Arial, Sans Serif" > <asp:Label ID="Label1" runat="server" Text=" Display Mode" Font-Bold="true" Font-Size="8" Width="120" /> <asp:DropDownList ID="DisplayModeDropdown" runat="server" AutoPostBack="true" Width="120" OnSelectedIndexChanged="DisplayModeDropdown_SelectedIndexChanged" /> <asp:LinkButton ID="LinkButton1" runat="server" Text="Reset User State" ToolTip="Reset the current user's personalization data for the page." Font-Size="8" OnClick="LinkButton1_Click" /> <asp:Panel ID="Panel2" runat="server" GroupingText="Personalization Scope" Font-Bold="true" Font-Size="8" Visible="false" > <asp:RadioButton ID="RadioButton1" runat="server" Text="User" AutoPostBack="true" GroupName="Scope" OnCheckedChanged="RadioButton1_CheckedChanged" /> <asp:RadioButton ID="RadioButton2" runat="server" Text="Shared" AutoPostBack="true" GroupName="Scope" OnCheckedChanged="RadioButton2_CheckedChanged" /> </asp:Panel> </asp:Panel> </div>
<%@ control language="C#" classname="DisplayModeMenuCS"%> <script runat="server"> // Use a field to reference the current WebPartManager. WebPartManager _manager; void Page_Init(object sender, EventArgs e) { Page.InitComplete += new EventHandler(InitComplete); } void InitComplete(object sender, System.EventArgs e) { _manager = WebPartManager.GetCurrentWebPartManager(Page); String browseModeName = WebPartManager.BrowseDisplayMode.Name; // Fill the dropdown with the names of supported display modes. foreach (WebPartDisplayMode mode in _manager.SupportedDisplayModes) { String modeName = mode.Name; // Make sure a mode is enabled before adding it. if (mode.IsEnabled(_manager)) { ListItem item = new ListItem(modeName, modeName); DisplayModeDropdown.Items.Add(item); } } // If shared scope is allowed for this user, display the scope-switching // UI and select the appropriate radio button for the current user scope. if (_manager.Personalization.CanEnterSharedScope) { Panel2.Visible = true; if (_manager.Personalization.Scope == PersonalizationScope.User) RadioButton1.Checked = true; else RadioButton2.Checked = true; } } // Change the page to the selected display mode. void DisplayModeDropdown_SelectedIndexChanged(object sender, EventArgs e) { String selectedMode = DisplayModeDropdown.SelectedValue; WebPartDisplayMode mode = _manager.SupportedDisplayModes[selectedMode]; if (mode != null) _manager.DisplayMode = mode; } // Set the selected item equal to the current display mode. void Page_PreRender(object sender, EventArgs e) { ListItemCollection items = DisplayModeDropdown.Items; int selectedIndex = items.IndexOf(items.FindByText(_manager.DisplayMode.Name)); DisplayModeDropdown.SelectedIndex = selectedIndex; } // Reset all of a user's personalization data for the page. protected void LinkButton1_Click(object sender, EventArgs e) { _manager.Personalization.ResetPersonalizationState(); } // If not in User personalization scope, toggle into it. protected void RadioButton1_CheckedChanged(object sender, EventArgs e) { if (_manager.Personalization.Scope == PersonalizationScope.Shared) _manager.Personalization.ToggleScope(); } // If not in Shared scope, and if user is allowed, toggle the scope. protected void RadioButton2_CheckedChanged(object sender, EventArgs e) { if (_manager.Personalization.CanEnterSharedScope && _manager.Personalization.Scope == PersonalizationScope.User) _manager.Personalization.ToggleScope(); } </script> <div> <asp:Panel ID="Panel1" runat="server" Borderwidth="1" Width="230" BackColor="lightgray" Font-Names="Verdana, Arial, Sans Serif" > <asp:Label ID="Label1" runat="server" Text=" Display Mode" Font-Bold="true" Font-Size="8" Width="120" /> <asp:DropDownList ID="DisplayModeDropdown" runat="server" AutoPostBack="true" Width="120" OnSelectedIndexChanged="DisplayModeDropdown_SelectedIndexChanged" /> <asp:LinkButton ID="LinkButton1" runat="server" Text="Reset User State" ToolTip="Reset the current user's personalization data for the page." Font-Size="8" OnClick="LinkButton1_Click" /> <asp:Panel ID="Panel2" runat="server" GroupingText="Personalization Scope" Font-Bold="true" Font-Size="8" Visible="false" > <asp:RadioButton ID="RadioButton1" runat="server" Text="User" AutoPostBack="true" GroupName="Scope" OnCheckedChanged="RadioButton1_CheckedChanged" /> <asp:RadioButton ID="RadioButton2" runat="server" Text="Shared" AutoPostBack="true" GroupName="Scope" OnCheckedChanged="RadioButton2_CheckedChanged" /> </asp:Panel> </asp:Panel> </div>
Web ページの宣言マークアップには、ユーザー コントロールとカスタム コントロール両方の Register ディレクティブが含まれています。<asp:webpartmanager> 要素、カスタム コントロールを格納する <asp:webpartzone> 要素、および <asp:connectionszone> 要素があります。また、ページには、WebPartManager コントロールの接続に関連するイベントを処理するいくつかのインライン コードが含まれ、コントロールを接続および接続解除した場合のこのコードの効果を確認できます。
<%@ Page Language="vb" %> <%@ register TagPrefix="uc1" TagName="DisplayModeMenuVB" Src="DisplayModeMenuVB.ascx" %> <%@ register tagprefix="aspSample" Namespace="Samples.AspNet.VB.Controls" Assembly="ConnectionSampleVB" %> <script runat="server"> Protected Sub WebPartManager1_WebPartsConnected( _ ByVal sender As Object, _ ByVal e As System.Web.UI.WebControls.WebParts.WebPartConnectionsEventArgs) UpdateLabelData(WebPartManager1.WebParts.Count, _ WebPartManager1.Connections.Count) End Sub Protected Sub WebPartManager1_WebPartsDisconnected( _ ByVal sender As Object, _ ByVal e As System.Web.UI.WebControls.WebParts.WebPartConnectionsEventArgs) UpdateLabelData(WebPartManager1.WebParts.Count, _ WebPartManager1.Connections.Count) End Sub Private Sub UpdateLabelData(ByVal wpCount As Integer, _ ByVal connCount As Integer) Label1.Text = "WebPart Control Count: " & wpCount.ToString() Label2.Text = "Connections Count: " & connCount.ToString() End Sub </script> <html > <head runat="server"> </head> <body> <form id="form1" runat="server"> <!-- Reference the WebPartManager control. --> <asp:WebPartManager ID="WebPartManager1" runat="server" OnWebPartsConnected="WebPartManager1_WebPartsConnected" OnWebPartsDisconnected="WebPartManager1_WebPartsDisconnected" /> <div> <uc1:DisplayModeMenuVB ID="displaymode1" runat="server" /> <!-- Reference consumer and provider controls in a zone. --> <asp:WebPartZone ID="WebPartZone1" runat="server"> <ZoneTemplate> <aspSample:ZipCodeWebPart ID="zip1" runat="server" Title="Zip Code Control"/> <aspSample:WeatherWebPart ID="weather1" runat="server" Title="Weather Control" /> </ZoneTemplate> </asp:WebPartZone> <hr /> <asp:Label ID="Label1" runat="server" Text=""></asp:Label> <br /> <asp:Label ID="Label2" runat="server" Text=""></asp:Label> <!-- Add a ConnectionsZone so users can connect controls. --> <asp:ConnectionsZone ID="ConnectionsZone1" runat="server" /> </div> </form> </body> </html>
<%@ Page Language="C#" %> <%@ register TagPrefix="uc1" TagName="DisplayModeMenuCS" Src="DisplayModeMenuCS.ascx" %> <%@ register tagprefix="aspSample" Namespace="Samples.AspNet.CS.Controls" Assembly="ConnectionSampleCS" %> <script runat="server"> private void UpdateLabelData(int wpCount, int connCount) { Label1.Text = "WebPart Control Count: " + wpCount.ToString(); Label2.Text = "Connections Count: " + connCount.ToString(); } protected void WebPartManager1_WebPartsConnected(object sender, WebPartConnectionsEventArgs e) { UpdateLabelData(WebPartManager1.WebParts.Count, WebPartManager1.Connections.Count); } protected void WebPartManager1_WebPartsDisconnected(object sender, WebPartConnectionsEventArgs e) { UpdateLabelData(WebPartManager1.WebParts.Count, WebPartManager1.Connections.Count); } </script> <html > <head id="Head1" runat="server"> </head> <body> <form id="form1" runat="server"> <!-- Reference the WebPartManager control. --> <asp:WebPartManager ID="WebPartManager1" runat="server" OnWebPartsConnected="WebPartManager1_WebPartsConnected" OnWebPartsDisconnected="WebPartManager1_WebPartsDisconnected" /> <div> <uc1:DisplayModeMenuCS ID="displaymode1" runat="server" /> <!-- Reference consumer and provider controls in a zone. --> <asp:WebPartZone ID="WebPartZone1" runat="server"> <ZoneTemplate> <aspSample:ZipCodeWebPart ID="zip1" runat="server" Title="Zip Code Control"/> <aspSample:WeatherWebPart ID="weather1" runat="server" Title="Weather Control" /> </ZoneTemplate> </asp:WebPartZone> <hr /> <asp:Label ID="Label1" runat="server" Text=""></asp:Label> <br /> <asp:Label ID="Label2" runat="server" Text=""></asp:Label> <!-- Add a ConnectionsZone so users can connect controls. --> <asp:ConnectionsZone ID="ConnectionsZone1" runat="server" /> </div> </form> </body> </html>
コード例の 3 番目の部分は、コントロールのソース コードです。IZipCode という名前のインターフェイスがあり、このインターフェイスは ZipCodeWebPart クラスに実装されています。このクラスには、プロバイダとして動作する ProvideIZipCode という名前の特別なコールバック メソッドがあります。また、WeatherWebPart という名前のその他の型が、GetIZipCode という名前の特別なメソッドに実装されています。このメソッドにより、このコントロールは他のコントロールのコンシューマとして動作できます。
コード例を実行するためには、このソース コードをコンパイルする必要があります。それを明示的にコンパイルし、コンパイル済みのアセンブリを Web サイトの Bin フォルダまたはグローバル アセンブリ キャッシュに配置できます。サイトの App_Code フォルダにソース コードを配置し、実行時に動的にコンパイルすることもできます。このコード例は、ソースをアセンブリにコンパイルしてあり、Web ページの Register ディレクティブがそのアセンブリ名を参照していることを前提にしています。コンパイル方法を示すチュートリアルについては、「チュートリアル : カスタム サーバー コントロールの開発と使用」を参照してください。
Imports System Imports System.Web Imports System.Web.Security Imports System.Security.Permissions Imports System.Web.UI Imports System.Web.UI.WebControls Imports System.Web.UI.WebControls.WebParts Namespace Samples.AspNet.VB.Controls <AspNetHostingPermission(SecurityAction.Demand, _ Level:=AspNetHostingPermissionLevel.Minimal)> _ <AspNetHostingPermission(SecurityAction.InheritanceDemand, _ Level:=AspNetHostingPermissionLevel.Minimal)> _ Public Interface IZipCode Property ZipCode() As String End Interface <AspNetHostingPermission(SecurityAction.Demand, _ Level:=AspNetHostingPermissionLevel.Minimal)> _ <AspNetHostingPermission(SecurityAction.InheritanceDemand, _ Level:=AspNetHostingPermissionLevel.Minimal)> _ Public Class ZipCodeWebPart Inherits WebPart Implements IZipCode Private zipCodeText As String = String.Empty Private input As TextBox Private send As Button Public Sub New() End Sub ' Make the implemented property personalizable to save ' the Zip Code between browser sessions. <Personalizable()> _ Public Property ZipCode() As String _ Implements IZipCode.ZipCode Get Return zipCodeText End Get Set(ByVal value As String) zipCodeText = value End Set End Property ' This is the callback method that returns the provider. <ConnectionProvider("Zip Code")> _ Public Function ProvideIZipCode() As IZipCode Return Me End Function Protected Overrides Sub CreateChildControls() Controls.Clear() input = New TextBox() Me.Controls.Add(input) send = New Button() send.Text = "Enter 5-digit Zip Code" AddHandler send.Click, AddressOf Me.submit_Click Me.Controls.Add(send) End Sub Private Sub submit_Click(ByVal sender As Object, _ ByVal e As EventArgs) If input.Text <> String.Empty Then zipCodeText = Page.Server.HtmlEncode(input.Text) input.Text = String.Empty End If End Sub End Class <AspNetHostingPermission(SecurityAction.Demand, _ Level:=AspNetHostingPermissionLevel.Minimal)> _ <AspNetHostingPermission(SecurityAction.InheritanceDemand, _ Level:=AspNetHostingPermissionLevel.Minimal)> _ Public Class WeatherWebPart Inherits WebPart Private _provider As IZipCode Private _zipSearch As String Private DisplayContent As Label ' This method is identified by the ConnectionConsumer ' attribute, and is the mechanism for connecting with ' the provider. <ConnectionConsumer("Zip Code")> _ Public Sub GetIZipCode(ByVal Provider As IZipCode) _provider = Provider End Sub Protected Overrides Sub OnPreRender(ByVal e As EventArgs) EnsureChildControls() If Not (Me._provider Is Nothing) Then _zipSearch = _provider.ZipCode.Trim() DisplayContent.Text = "My Zip Code is: " + _zipSearch End If End Sub 'OnPreRender Protected Overrides Sub CreateChildControls() Controls.Clear() DisplayContent = New Label() Me.Controls.Add(DisplayContent) End Sub End Class End Namespace
namespace Samples.AspNet.CS.Controls { using System; using System.Web; using System.Web.Security; using System.Security.Permissions; using System.Web.UI; using System.Web.UI.WebControls; using System.Web.UI.WebControls.WebParts; [AspNetHostingPermission(SecurityAction.Demand, Level = AspNetHostingPermissionLevel.Minimal)] [AspNetHostingPermission(SecurityAction.InheritanceDemand, Level = AspNetHostingPermissionLevel.Minimal)] public interface IZipCode { string ZipCode { get; set;} } [AspNetHostingPermission(SecurityAction.Demand, Level = AspNetHostingPermissionLevel.Minimal)] [AspNetHostingPermission(SecurityAction.InheritanceDemand, Level = AspNetHostingPermissionLevel.Minimal)] public class ZipCodeWebPart : WebPart, IZipCode { string zipCodeText = String.Empty; TextBox input; Button send; public ZipCodeWebPart() { } // Make the implemented property personalizable to save // the Zip Code between browser sessions. [Personalizable()] public virtual string ZipCode { get { return zipCodeText; } set { zipCodeText = value; } } // This is the callback method that returns the provider. [ConnectionProvider("Zip Code")] public IZipCode ProvideIZipCode() { return this; } protected override void CreateChildControls() { Controls.Clear(); input = new TextBox(); this.Controls.Add(input); send = new Button(); send.Text = "Enter 5-digit Zip Code"; send.Click += new EventHandler(this.submit_Click); this.Controls.Add(send); } private void submit_Click(object sender, EventArgs e) { if (input.Text != String.Empty) { zipCodeText = Page.Server.HtmlEncode(input.Text); input.Text = String.Empty; } } } [AspNetHostingPermission(SecurityAction.Demand, Level = AspNetHostingPermissionLevel.Minimal)] [AspNetHostingPermission(SecurityAction.InheritanceDemand, Level = AspNetHostingPermissionLevel.Minimal)] public class WeatherWebPart : WebPart { private IZipCode _provider; string _zipSearch; Label DisplayContent; // This method is identified by the ConnectionConsumer // attribute, and is the mechanism for connecting with // the provider. [ConnectionConsumer("Zip Code")] public void GetIZipCode(IZipCode Provider) { _provider = Provider; } protected override void OnPreRender(EventArgs e) { EnsureChildControls(); if (this._provider != null) { _zipSearch = _provider.ZipCode.Trim(); DisplayContent.Text = "My Zip Code is: " + _zipSearch; } } protected override void CreateChildControls() { Controls.Clear(); DisplayContent = new Label(); this.Controls.Add(DisplayContent); } } }
ブラウザに Web ページを読み込んだ後、[Display Mode] ドロップダウン リスト コントロールをクリックし、[接続] を選択してページを接続モードに切り替えます。接続モードは、<asp:connectionszone> 要素を使用して、コントロールの間に接続を作成できるようにします。接続モードで、[ZIP Code] コントロールのタイトル バーにある下向きの矢印をクリックしてその動詞メニューをアクティブにし、[接続] をクリックします。接続 UI が表示されたら、[コンシューマへの接続の作成] リンクをクリックします。ドロップダウン リスト コントロールを持つセルが表示されます。ドロップダウン リストの [Weather Control] を選択し、[接続] をクリックして 2 つのコントロールの接続を確立します。[閉じる] をクリックし、[Display Mode] ドロップダウン リストを使用してページを通常のブラウズ モードに戻します。郵便番号を入力すると、コンシューマ コントロールが入力した値により更新されます。ZipCode プロパティはソース コードに Personalizable 属性でマークしたため、このプロパティ値はブラウザ セッション全体にわたって保持され、ユーザーが入力した値が保存されます。より高度なコンシューマ コントロールでは、郵便番号情報を取得し、この情報に基づいて気象情報を検索して、それをユーザーに表示します。


System.Web.UI.Control
System.Web.UI.WebControls.WebParts.WebPartManager


Windows 98, Windows 2000 SP4, Windows Millennium Edition, Windows Server 2003, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP SP2, Windows XP Starter Edition
開発プラットフォームの中には、.NET Framework によってサポートされていないバージョンがあります。サポートされているバージョンについては、「システム要件」を参照してください。


WebPartManager コンストラクタ
アセンブリ: System.Web (system.web.dll 内)


WebPartManager コンストラクタは、WebPartManager コントロールで使用する複数の重要な変数を初期化します。すべての Web パーツ ページに直接効果がある 1 回の割り当てにより、既定のページ表示モードがブラウズ モード (BrowseDisplayMode) に設定されます。

Windows 98, Windows 2000 SP4, Windows Millennium Edition, Windows Server 2003, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP SP2, Windows XP Starter Edition
開発プラットフォームの中には、.NET Framework によってサポートされていないバージョンがあります。サポートされているバージョンについては、「システム要件」を参照してください。


WebPartManager フィールド

名前 | 説明 | |
---|---|---|
![]() | BrowseDisplayMode | Web パーツ コントロールが含まれたページの既定の表示モードを表します。このフィールドは読み取り専用です。 |
![]() | CatalogDisplayMode | コントロールのカタログから Web ページにサーバー コントロールを追加する場合に使用する表示モードを表します。このフィールドは読み取り専用です。 |
![]() | ConnectDisplayMode | ユーザーが WebPart コントロール間の接続を管理するための特殊なユーザー インターフェイス (UI) を表示する場合に使用する表示モードを表します。このフィールドは読み取り専用です。 |
![]() | DesignDisplayMode | Web パーツ コントロールを含む Web ページのレイアウトを変更する場合に使用する表示モードを表します。このフィールドは読み取り専用です。 |
![]() | EditDisplayMode | エンド ユーザーによるサーバー コントロールの編集および変更が可能な表示モードを表します。このフィールドは読み取り専用です。 |

関連項目
WebPartManager クラスSystem.Web.UI.WebControls.WebParts 名前空間
WebPartManagerInternals
その他の技術情報
ASP.NET Web パーツ ページWebPartManager プロパティ



名前 | 説明 | |
---|---|---|
![]() | System.Web.UI.WebControls.WebParts.IPersonalizable.IsDirty | WebPartManager コントロールによって管理されているカスタムのパーソナル化状態データが Web ページ上で変更されたかどうかを示す値を取得します。 |

関連項目
WebPartManager クラスSystem.Web.UI.WebControls.WebParts 名前空間
WebPartManagerInternals
その他の技術情報
ASP.NET Web パーツ ページWebPartManager メソッド



名前 | 説明 | |
---|---|---|
![]() | System.Web.UI.WebControls.WebParts.IPersonalizable.Load | 以前に保存した、WebPartManager コントロールへの読み込みが必要なカスタムのパーソナル化状態データを返します。 |
![]() | System.Web.UI.WebControls.WebParts.IPersonalizable.Save | WebPartManager コントロールで管理されるカスタムのパーソナル化状態データを保存します。 |

関連項目
WebPartManager クラスSystem.Web.UI.WebControls.WebParts 名前空間
WebPartManagerInternals
その他の技術情報
ASP.NET Web パーツ ページWebPartManager メンバ
Web パーツ コントロール、Web パーツ機能、および Web ページ上で発生するイベントのすべてを管理する、Web パーツ コントロール セットの中心的なクラスとして機能します。
WebPartManager データ型で公開されるメンバを以下の表に示します。


名前 | 説明 | |
---|---|---|
![]() | BrowseDisplayMode | Web パーツ コントロールが含まれたページの既定の表示モードを表します。このフィールドは読み取り専用です。 |
![]() | CatalogDisplayMode | コントロールのカタログから Web ページにサーバー コントロールを追加する場合に使用する表示モードを表します。このフィールドは読み取り専用です。 |
![]() | ConnectDisplayMode | ユーザーが WebPart コントロール間の接続を管理するための特殊なユーザー インターフェイス (UI) を表示する場合に使用する表示モードを表します。このフィールドは読み取り専用です。 |
![]() | DesignDisplayMode | Web パーツ コントロールを含む Web ページのレイアウトを変更する場合に使用する表示モードを表します。このフィールドは読み取り専用です。 |
![]() | EditDisplayMode | エンド ユーザーによるサーバー コントロールの編集および変更が可能な表示モードを表します。このフィールドは読み取り専用です。 |






名前 | 説明 | |
---|---|---|
![]() | System.Web.UI.WebControls.WebParts.IPersonalizable.Load | 以前に保存した、WebPartManager コントロールへの読み込みが必要なカスタムのパーソナル化状態データを返します。 |
![]() | System.Web.UI.WebControls.WebParts.IPersonalizable.Save | WebPartManager コントロールで管理されるカスタムのパーソナル化状態データを保存します。 |
![]() | System.Web.UI.WebControls.WebParts.IPersonalizable.IsDirty | WebPartManager コントロールによって管理されているカスタムのパーソナル化状態データが Web ページ上で変更されたかどうかを示す値を取得します。 |

関連項目
WebPartManager クラスSystem.Web.UI.WebControls.WebParts 名前空間
WebPartManagerInternals
その他の技術情報
ASP.NET Web パーツ ページWeblioに収録されているすべての辞書からWebPartManagerを検索する場合は、下記のリンクをクリックしてください。

- WebPartManagerのページへのリンク