ProxyWebPartManager Classe
Définition
Important
Certaines informations portent sur la préversion du produit qui est susceptible d’être en grande partie modifiée avant sa publication. Microsoft exclut toute garantie, expresse ou implicite, concernant les informations fournies ici.
Permet aux développeurs de déclarer des connexions statiques dans une page de contenu quand un contrôle WebPartManager a été déclaré dans la page maître associée à la page de contenu.
public ref class ProxyWebPartManager : System::Web::UI::Control
[System.ComponentModel.Bindable(false)]
public class ProxyWebPartManager : System.Web.UI.Control
[<System.ComponentModel.Bindable(false)>]
type ProxyWebPartManager = class
inherit Control
Public Class ProxyWebPartManager
Inherits Control
- Héritage
- Attributs
Exemples
L’exemple de code suivant montre comment utiliser la ProxyWebPartManager classe pour déclarer des connexions statiques sur des pages de contenu dans une application qui utilise des pages maîtres. L’exemple comporte cinq parties :
Contrôle utilisateur qui vous permet de modifier le mode d’affichage des composants WebPart sur une page.
Code source pour une interface et deux WebPart contrôles agissant en tant que fournisseur et consommateur pour une connexion.
Page web maître qui héberge le contrôle utilisateur, les pages de contenu et le WebPartManager contrôle de l’application.
Page web de contenu qui héberge un ProxyWebPartManager contrôle, les deux contrôles personnalisés WebPart et une connexion statique pour connecter les deux contrôles.
Explication de l’exécution de l’exemple de page.
La première partie de cet exemple de code est le contrôle utilisateur qui permet aux utilisateurs de modifier les modes d’affichage sur une page Web. Enregistrez le code source suivant dans un fichier .ascx, en lui attribuant le nom de fichier affecté à l’attribut Src
de la Register
directive pour ce contrôle utilisateur, qui se trouve en haut de la page maître d’hébergement. Pour plus d’informations sur les modes d’affichage et une description du code source dans ce contrôle, consultez Procédure pas à pas : modification des modes d’affichage sur une page de composants WebPart.
<%@ 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"
AssociatedControlID="DisplayModeDropdown"/>
<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="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"
AssociatedControlID="DisplayModeDropdown"/>
<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>
La deuxième partie de l’exemple de code est le code source de l’interface et des contrôles. Le fichier source contient une interface simple nommée IZipCode
. Il existe également une WebPart classe nommée ZipCodeWebPart
qui implémente l’interface et joue le rôle de contrôle du fournisseur. Sa ProvideIZipCode
méthode est la méthode de rappel qui implémente le seul membre de l’interface. La méthode retourne simplement une instance de l’interface. Notez que la méthode est marquée avec un ConnectionProvider
attribut dans ses métadonnées. Il s’agit du mécanisme permettant d’identifier la méthode en tant que méthode de rappel pour le point de connexion du fournisseur. L’autre WebPart classe est nommée WeatherWebPart
et joue le rôle de consommateur pour la connexion. Cette classe a une méthode nommée GetZipCode
qui obtient une instance de l’interface IZipCode
à partir du contrôle fournisseur. Notez que cette méthode est marquée comme méthode de point de connexion du consommateur avec un ConnectionConsumer
attribut dans ses métadonnées.
Pour que l’exemple de code s’exécute, vous devez compiler ce code source. Vous pouvez le compiler explicitement et placer l’assembly résultant dans le dossier Bin de votre site web ou dans le Global Assembly Cache. Vous pouvez également placer le code source dans le dossier App_Code de votre site, où il sera compilé dynamiquement au moment de l’exécution. Cet exemple de code utilise la compilation dynamique. Pour obtenir une procédure pas à pas qui montre comment compiler, consultez Procédure pas à pas : développement et utilisation d’un contrôle serveur Web personnalisé.
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 Provider", "ZipCodeProvider")]
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 (!string.IsNullOrEmpty(input.Text))
{
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 Consumer", "ZipCodeConsumer")]
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);
}
}
}
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 Provider", "ZipCodeProvider")> _
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 Consumer", "ZipCodeConsumer")> _
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
Protected Overrides Sub CreateChildControls()
Controls.Clear()
DisplayContent = New Label()
Me.Controls.Add(DisplayContent)
End Sub
End Class
End Namespace
La troisième partie de l’exemple de code est la page maître. Vous devez prendre le code source suivant et l’enregistrer dans un fichier, en le nommant MasterPageCS.master ou MasterPageVB.master (selon la langue que vous utilisez). Notez que la page maître contient une Register
directive pour inscrire le contrôle utilisateur et qu’elle référence le contrôle utilisateur lui-même dans le corps de la page. La page maître déclare également l’élément unique <asp:webpartmanager>
utilisé pour cette page et toutes les pages de contenu associées. Enfin, la page maître a un <asp: contentplaceholder>
élément qui déclare le point dans la page où la page de contenu est insérée.
<%@ Master Language="C#" %>
<%@ register tagprefix="uc1"
tagname="DisplayModeMenuCS"
src="~/displaymodemenucs.ascx" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" >
<head runat="server">
<title>Master page with connections in content pages</title>
</head>
<body>
<h2>Contoso, Ltd.</h2>
<hr />
<form id="form1" runat="server">
<asp:webpartmanager runat="server" id="WebPartManager1" />
<uc1:displaymodemenucs id="menu1" runat="server" />
<div>
<asp:contentplaceholder id="ContentPlaceHolder1"
runat="server" />
</div>
</form>
</body>
</html>
<%@ Master Language="VB" %>
<%@ register tagprefix="uc1"
tagname="DisplayModeMenuVB"
src="~/displaymodemenuvb.ascx" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" >
<head runat="server">
<title>Master page with connections in content pages</title>
</head>
<body>
<h2>Contoso, Ltd.</h2>
<hr />
<form id="form1" runat="server">
<asp:webpartmanager runat="server" id="WebPartManager1" />
<uc1:displaymodemenuvb id="menu1" runat="server" />
<div>
<asp:contentplaceholder id="ContentPlaceHolder1"
runat="server" />
</div>
</form>
</body>
</html>
La quatrième partie de l’exemple de code est la page de contenu. Vous devez copier le code source suivant et l’enregistrer dans un fichier avec une extension .aspx. Notez que sa Page
directive contient un MasterFile
attribut pour faire référence à la page maître. En outre, cette page a une Register
directive pour inscrire le fichier dans le dossier App_Code qui contient les contrôles personnalisés WebPart compilés dynamiquement qui participent à la connexion. Dans les <asp:content>
balises de la page, il y a un <asp:proxywebpartmanager>
élément, avec un élément enfant <staticconnections>
, qui à son tour a un élément enfant <asp:webpartconnection>
pour déclarer les détails de la connexion. Dans les <script>
balises de la page, la Button1_Click
méthode ajoute du code qui accède au contrôle principal WebPartManager dans la page maître et au ProxyWebPartManager contrôle dans la page de contenu, et écrit certains de leurs détails dans la page.
<%@ Page Language="C#" MasterPageFile="~/MasterPageCS.master"
Title="Connections Page" %>
<%@ Register TagPrefix="aspSample"
Namespace="Samples.AspNet.CS.Controls" %>
<script runat="server">
protected void Button1_Click(object sender, EventArgs e)
{
StringBuilder lblText = new StringBuilder();
if (Page.Master.FindControl("WebPartManager1") != null)
{
WebPartManager theMgr =
(WebPartManager)Page.Master.FindControl("WebPartManager1");
lblText.Append("WebPartManager: <br /><pre>" +
" Master page file is " + Page.MasterPageFile + "<br />" +
" ID is " + theMgr.ID + "<br />" +
" Connection count is " +
theMgr.StaticConnections.Count.ToString() + "<br />" +
" WebParts count is " +
theMgr.WebParts.Count.ToString() + "</pre><br />");
}
if (proxymgr1 != null)
{
lblText.Append("ProxyWebPartManager: <br /><pre>" +
" Content page file is " + Request.Path + "<br />" +
" ID is " + proxymgr1.ID + "<br />" +
" Connection count is " +
proxymgr1.StaticConnections.Count.ToString() +
"</pre><br />");
}
Literal1.Text = lblText.ToString();
}
</script>
<asp:Content ID="Content1" Runat="Server"
ContentPlaceHolderID="ContentPlaceHolder1" >
<asp:proxywebpartmanager id="proxymgr1" runat="server">
<staticconnections>
<asp:webpartconnection id="connection1"
consumerconnectionpointid="ZipCodeConsumer"
consumerid="zipConsumer"
providerconnectionpointid="ZipCodeProvider"
providerid="zipProvider" />
</staticconnections>
</asp:proxywebpartmanager>
<div>
<asp:webpartzone id="zone1" runat="server">
<zonetemplate>
<aspsample:zipcodewebpart id="zipProvider" runat="server"
title="Zip Code Provider" />
<aspsample:weatherwebpart id="zipConsumer" runat="server"
title="Zip Code Consumer" />
</zonetemplate>
</asp:webpartzone>
</div>
<div>
<asp:button id="Button1" runat="server"
text="WebPartManager Information" onclick="Button1_Click" />
<br />
</div>
<asp:connectionszone id="ConnectionsZone1" runat="server" />
<asp:literal id="Literal1" runat="server" />
</asp:Content>
<%@ Page Language="VB" MasterPageFile="~/MasterPageVB.master"
Title="Connections Page" %>
<%@ Register TagPrefix="aspSample"
Namespace="Samples.AspNet.VB.Controls" %>
<script runat="server">
Protected Sub Button1_Click(ByVal sender As Object, _
ByVal e As EventArgs)
Dim lblText As StringBuilder = New StringBuilder()
If Not (Page.Master.FindControl("WebPartManager1") Is Nothing) Then
Dim theMgr As WebPartManager = _
CType(Page.Master.FindControl("WebPartManager1"), WebPartManager)
lblText.Append("WebPartManager: <br /><pre>" & _
" Master page file is " & Page.MasterPageFile & "<br />" & _
" ID is " & theMgr.ID & "<br />" & _
" Connection count is " & _
theMgr.StaticConnections.Count.ToString() & "<br />" & _
" WebParts count is " & _
theMgr.WebParts.Count.ToString() & "</pre><br />")
End If
If Not (proxymgr1 Is Nothing) Then
lblText.Append("ProxyWebPartManager: <br /><pre>" & _
" Content page file is " & Request.Path & "<br />" & _
" ID is " & proxymgr1.ID & "<br />" & _
" Connection count is " & _
proxymgr1.StaticConnections.Count.ToString() & "</pre><br />")
End If
Literal1.Text = lblText.ToString()
End Sub
</script>
<asp:Content ID="Content1" Runat="Server"
ContentPlaceHolderID="ContentPlaceHolder1" >
<asp:proxywebpartmanager id="proxymgr1" runat="server">
<staticconnections>
<asp:webpartconnection id="connection1"
consumerconnectionpointid="ZipCodeConsumer"
consumerid="zipConsumer"
providerconnectionpointid="ZipCodeProvider"
providerid="zipProvider" />
</staticconnections>
</asp:proxywebpartmanager>
<div>
<asp:webpartzone id="zone1" runat="server">
<zonetemplate>
<aspsample:zipcodewebpart id="zipProvider" runat="server"
title="Zip Code Provider" />
<aspsample:weatherwebpart id="zipConsumer" runat="server"
title="Zip Code Consumer" />
</zonetemplate>
</asp:webpartzone>
</div>
<div>
<asp:button id="Button1" runat="server"
text="WebPartManager Information" onclick="Button1_Click" />
<br />
<asp:literal id="Literal1" runat="server" />
</div>
<asp:connectionszone id="ConnectionsZone1" runat="server" />
</asp:Content>
Après avoir chargé la page dans un navigateur, cliquez sur le bouton Informations webPartManager et observez les informations sur le WebPartManager contrôle dans la page maître et le ProxyWebPartManager contrôle dans la page de contenu. Par exemple, notez qu’ils ont tous les deux le même nombre dans leurs propriétés respectives qui effectuent le suivi des connexions statiques (la StaticConnections propriété ). Notez également que bien que le WebPartManager contrôle ait une WebParts propriété qui effectue le suivi du nombre de WebPart contrôles qu’il gère, le ProxyWebPartManager contrôle n’a pas de propriété de ce type, car son seul objectif est de contenir des connexions statiques.
Remarques
Le ProxyWebPartManager contrôle existe pour le scénario particulier de déclaration de connexions statiques dans les pages de contenu lorsqu’un WebPartManager contrôle a déjà été déclaré dans une page maître.
Par conception, une page Web qui utilise des contrôles WebPart doit contenir un (et un seul) WebPartManager contrôle qui gère tous les contrôles WebPart de la page. Lorsqu’une application de composants WebPart utilise des pages maîtres, il est courant de placer le WebPartManager contrôle dans la page maître, car toutes les pages de contenu sont fusionnées avec la page maître au moment de l’exécution et le contrôle unique WebPartManager gère tous les contrôles WebPart à partir de toutes les pages de contenu. Toutefois, lorsque les développeurs souhaitent déclarer des connexions statiques dans les pages de contenu d’une telle application, ils peuvent sembler être confrontés à une limitation. Une connexion de composants WebPart statiques ne peut être déclarée qu’en ajoutant un <asp:webpartconnection>
élément en tant qu’enfant d’un <staticconnections>
élément, qui lui-même doit être un enfant d’un <asp:webpartmanager>
élément. Toutefois, étant donné que le WebPartManager contrôle a déjà été déclaré dans la page maître et qu’il s’agit du seul contrôle autorisé WebPartManager , les développeurs ne peuvent pas déclarer de contrôles supplémentaires WebPartManager dans les pages de contenu pour ajouter des connexions statiques.
Le ProxyWebPartManager contrôle prend la place du WebPartManager contrôle dans ce scénario. Les développeurs déclarent un <asp:proxywebpartmanager>
élément au lieu d’un <asp:webpartmanager>
élément dans leurs pages de contenu, puis peuvent déclarer des connexions statiques en tant qu’éléments enfants. Au moment de l’exécution, les connexions dans le ProxyWebPartManager contrôle sont simplement ajoutées à la StaticConnections collection du WebPartManager contrôle et traitées comme toute autre connexion.
Étant donné que le ProxyWebPartManager contrôle est utilisé uniquement dans ce scénario de développement particulier, il a des fonctionnalités plus limitées que la WebPartManager classe . En fait, bien que le contrôle joue le ProxyWebPartManager rôle de proxy pour contenir des connexions statiques pour le contrôle dans les WebPartManager pages de contenu, il n’hérite pas du WebPartManager contrôle. Il hérite directement de la Control classe et ne remplace que quelques-uns des membres de base. Les EnableThemingpropriétés , Visibleet SkinID sont remplacées et affectées à des valeurs qui empêchent leur utilisation. D’autres propriétés héritées sont remplacées pour ajuster leur comportement au moment du design, mais dans le cas contraire, elles ont le même comportement que les propriétés de base. Celles-ci incluent les Controls propriétés et ClientID . Enfin, la ProxyWebPartManager classe a une propriété non héritée. La StaticConnections propriété retourne sa propre collection de connexions statiques (un ProxyWebPartConnectionCollection objet ).
En ce qui concerne les méthodes, la ProxyWebPartManager classe ne remplace de la même façon que quelques méthodes, principalement pour restreindre leur utilisation. La méthode héritée Focus est rendue inutilisable en lisant une exception si elle est appelée. La CreateControlCollection méthode retourne toujours une collection de contrôles vide, ce qui a pour effet de l’empêcher de pouvoir contenir une collection de contrôles. Enfin, la OnInit méthode appelle la méthode de base, puis affecte la collection de connexions référencées par la StaticConnections propriété à la WebPartManager.StaticConnections propriété du WebPartManager contrôle. Cela a pour effet de regrouper toutes les connexions statiques déclarées dans toutes les pages de contenu et de les intégrer à la collection de connexions gérée par le WebPartManager contrôle dans la page maître.
Constructeurs
ProxyWebPartManager() |
Initialise une nouvelle instance de la classe ProxyWebPartManager. |
Propriétés
Adapter |
Obtient l'adaptateur spécifique au navigateur pour le contrôle. (Hérité de Control) |
AppRelativeTemplateSourceDirectory |
Obtient ou définit le répertoire virtuel relatif à l'application de l'objet Page ou UserControl qui contient ce contrôle. (Hérité de Control) |
BindingContainer |
Obtient le contrôle qui contient la liaison de données de ce contrôle. (Hérité de Control) |
ChildControlsCreated |
Obtient une valeur qui indique si des contrôles enfants du contrôle serveur ont été créés. (Hérité de Control) |
ClientID |
Obtient l’ID de contrôle du balisage HTML généré par ASP.NET. |
ClientIDMode |
Obtient ou définit l'algorithme utilisé pour générer la valeur de la propriété ClientID. (Hérité de Control) |
ClientIDSeparator |
Obtient une valeur de caractère représentant le caractère de séparation utilisé dans la propriété ClientID. (Hérité de Control) |
Context |
Obtient l'objet HttpContext associé au contrôle serveur pour la demande Web en cours. (Hérité de Control) |
Controls |
Obtient un objet ControlCollection qui représente les contrôles enfants pour un contrôle serveur spécifié dans la hiérarchie de l’interface utilisateur. |
DataItemContainer |
Obtient une référence au conteneur d'attribution de noms si celui-ci implémente IDataItemContainer. (Hérité de Control) |
DataKeysContainer |
Obtient une référence au conteneur d'attribution de noms si celui-ci implémente IDataKeysControl. (Hérité de Control) |
DesignMode |
Obtient une valeur indiquant si un contrôle est utilisé sur une aire de conception. (Hérité de Control) |
EnableTheming |
Substitue la propriété de base pour empêcher l'utilisation de thèmes. |
EnableViewState |
Obtient ou définit une valeur indiquant si le contrôle serveur conserve son état d’affichage, et l’état d’affichage de tous les contrôles enfants qu’il contient, au client demandeur. (Hérité de Control) |
Events |
Obtient la liste des délégués de gestionnaires d'événements pour le contrôle. Cette propriété est en lecture seule. (Hérité de Control) |
HasChildViewState |
Obtient une valeur indiquant si les contrôles enfants du contrôle serveur en cours possèdent des paramètres d'état d'affichage enregistrés. (Hérité de Control) |
ID |
Obtient ou définit l'ID programmatique assigné au contrôle serveur. (Hérité de Control) |
IdSeparator |
Obtient le caractère utilisé pour séparer des identificateurs de contrôle. (Hérité de Control) |
IsChildControlStateCleared |
Obtient une valeur indiquant si les contrôles contenus dans ce contrôle utilisent l'état du contrôle. (Hérité de Control) |
IsTrackingViewState |
Obtient une valeur qui indique si le contrôle serveur enregistre les modifications apportées à son état d'affichage. (Hérité de Control) |
IsViewStateEnabled |
Obtient une valeur indiquant si l'état d'affichage est activé pour ce contrôle. (Hérité de Control) |
LoadViewStateByID |
Obtient une valeur indiquant si le contrôle participe au chargement de son état d'affichage par ID et non par index. (Hérité de Control) |
NamingContainer |
Obtient une référence au conteneur d'attribution de noms du contrôle serveur, qui crée un espace de noms unique pour différencier les contrôles serveur dont la propriété ID possède la même valeur. (Hérité de Control) |
Page |
Obtient une référence à l'instance de Page qui contient le contrôle serveur. (Hérité de Control) |
Parent |
Obtient une référence au contrôle parent du contrôle serveur dans la hiérarchie des contrôles de la page. (Hérité de Control) |
RenderingCompatibility |
Obtient une valeur qui spécifie la version ASP.NET avec laquelle le HTML restitué sera compatible. (Hérité de Control) |
Site |
Obtient des informations sur le conteneur qui héberge le contrôle en cours lorsqu'il est rendu sur une aire de conception. (Hérité de Control) |
SkinID |
Substitue la propriété de base pour empêcher l'assignation d'une valeur. |
StaticConnections |
Obtient une collection de connexions statiques déclarées dans l'élément |
TemplateControl |
Obtient ou définit une référence au modèle qui contient ce contrôle. (Hérité de Control) |
TemplateSourceDirectory |
Obtient le répertoire virtuel du Page ou du UserControl qui contient le contrôle serveur en cours. (Hérité de Control) |
UniqueID |
Obtient l'identificateur unique qualifié sur le plan hiérarchique du contrôle serveur. (Hérité de Control) |
ValidateRequestMode |
Obtient ou définit une valeur qui indique si le contrôle vérifie l'entrée cliente du navigateur à la recherche de valeurs potentiellement dangereuses. (Hérité de Control) |
ViewState |
Obtient un dictionnaire d'informations d'état qui vous permet d'enregistrer et de restaurer l'état d'affichage d'un contrôle serveur entre plusieurs demandes de la même page. (Hérité de Control) |
ViewStateIgnoresCase |
Obtient une valeur qui indique si l'objet StateBag respecte la casse. (Hérité de Control) |
ViewStateMode |
Obtient ou définit le mode d'état d'affichage de ce contrôle. (Hérité de Control) |
Visible |
Substitue la propriété de base pour empêcher l'assignation d'une valeur. |
Méthodes
AddedControl(Control, Int32) |
Méthode appelée après qu’un contrôle enfant est ajouté à la collection Controls de l’objet Control. (Hérité de Control) |
AddParsedSubObject(Object) |
Avertit le contrôle serveur qu’un élément XML ou HTML a été analysé, et ajoute l’élément à l’objet ControlCollection du contrôle serveur. (Hérité de Control) |
ApplyStyleSheetSkin(Page) |
Applique les propriétés de style définies dans la feuille de style de la page au contrôle. (Hérité de Control) |
BeginRenderTracing(TextWriter, Object) |
Commence le traçage au moment du design des données de rendu. (Hérité de Control) |
BuildProfileTree(String, Boolean) |
Collecte des informations sur le contrôle serveur et les livre à la propriété Trace à afficher lorsque le traçage est activé pour la page. (Hérité de Control) |
ClearCachedClientID() |
Affecte à la valeur ClientID mise en cache la valeur |
ClearChildControlState() |
Supprime les informations sur l'état du contrôle des contrôles enfants du contrôle serveur. (Hérité de Control) |
ClearChildState() |
Supprime les informations sur l'état d'affichage et sur l'état du contrôle de tous les contrôles enfants du contrôle serveur. (Hérité de Control) |
ClearChildViewState() |
Supprime les informations d'état d'affichage de tous les contrôles enfants du contrôle serveur. (Hérité de Control) |
ClearEffectiveClientIDMode() |
Affecte la valeur ClientIDMode à la propriété Inherit de l'instance de contrôle actuelle et de tous contrôles enfants. (Hérité de Control) |
CreateChildControls() |
Appelée par l’infrastructure de page ASP.NET pour signaler aux contrôles serveur qu’ils doivent utiliser l’implémentation basée sur la composition pour créer les contrôles enfants qu’ils contiennent en vue de la publication ou du rendu. (Hérité de Control) |
CreateControlCollection() |
Substitue la propriété de base pour empêcher le contrôle ProxyWebPartManager de contenir des contrôles. |
DataBind() |
Lie une source de données au contrôle serveur appelé et à tous ses contrôles enfants. (Hérité de Control) |
DataBind(Boolean) |
Lie une source de données au contrôle serveur appelé et tous ses contrôles enfants avec une option pour déclencher l'événement DataBinding. (Hérité de Control) |
DataBindChildren() |
Lie une source de données aux contrôles enfants du contrôle serveur. (Hérité de Control) |
Dispose() |
Permet à un contrôle serveur d'effectuer le nettoyage final avant qu'il soit libéré de la mémoire. (Hérité de Control) |
EndRenderTracing(TextWriter, Object) |
Met fin au traçage au moment du design des données de rendu. (Hérité de Control) |
EnsureChildControls() |
Détermine si le contrôle serveur contient des contrôles enfants. S'il ne contient pas de contrôles enfants, il en crée. (Hérité de Control) |
EnsureID() |
Crée un identificateur pour les contrôles auxquels aucun identificateur n'est assigné. (Hérité de Control) |
Equals(Object) |
Détermine si l'objet spécifié est égal à l'objet actuel. (Hérité de Object) |
FindControl(String) |
Recherche un contrôle serveur possédant le paramètre |
FindControl(String, Int32) |
Recherche le conteneur d'attribution de noms actuel d'un contrôle serveur avec l' |
Focus() |
Substitue la méthode de base pour empêcher l'appel de la méthode. |
GetDesignModeState() |
Obtient les données au moment du design pour un contrôle. (Hérité de Control) |
GetHashCode() |
Fait office de fonction de hachage par défaut. (Hérité de Object) |
GetRouteUrl(Object) |
Obtient l'URL qui correspond à un jeu de paramètres d'itinéraire. (Hérité de Control) |
GetRouteUrl(RouteValueDictionary) |
Obtient l'URL qui correspond à un jeu de paramètres d'itinéraire. (Hérité de Control) |
GetRouteUrl(String, Object) |
Obtient l'URL qui correspond à un jeu de paramètres d'itinéraire et à un nom d'itinéraire. (Hérité de Control) |
GetRouteUrl(String, RouteValueDictionary) |
Obtient l'URL qui correspond à un jeu de paramètres d'itinéraire et à un nom d'itinéraire. (Hérité de Control) |
GetType() |
Obtient le Type de l'instance actuelle. (Hérité de Object) |
GetUniqueIDRelativeTo(Control) |
Retourne la partie préfixée de la propriété UniqueID du contrôle spécifié. (Hérité de Control) |
HasControls() |
Détermine si le contrôle serveur contient des contrôles enfants. (Hérité de Control) |
HasEvents() |
Retourne une valeur indiquant si des événements sont inscrits pour le contrôle ou des contrôles enfants. (Hérité de Control) |
IsLiteralContent() |
Détermine si le contrôle serveur ne détient qu'un contenu littéral. (Hérité de Control) |
LoadControlState(Object) |
Restaure des informations sur l'état du contrôle à partir d'une demande de page antérieure enregistrée par la méthode SaveControlState(). (Hérité de Control) |
LoadViewState(Object) |
Restaure les informations d’état d’affichage d’une précédente requête de page enregistrées par la méthode SaveViewState(). (Hérité de Control) |
MapPathSecure(String) |
Récupère le chemin d'accès physique auquel un chemin d'accès virtuel, absolu ou relatif, correspond. (Hérité de Control) |
MemberwiseClone() |
Crée une copie superficielle du Object actuel. (Hérité de Object) |
OnBubbleEvent(Object, EventArgs) |
Détermine si l’événement du contrôle serveur est passé dans la hiérarchie des contrôles serveur de l’interface utilisateur de la page. (Hérité de Control) |
OnDataBinding(EventArgs) |
Déclenche l’événement DataBinding. (Hérité de Control) |
OnInit(EventArgs) |
Déclenche l'événement Init et initialise le contrôle. |
OnLoad(EventArgs) |
Déclenche l’événement Load. (Hérité de Control) |
OnPreRender(EventArgs) |
Déclenche l’événement PreRender. (Hérité de Control) |
OnUnload(EventArgs) |
Déclenche l’événement Unload. (Hérité de Control) |
OpenFile(String) |
Obtient un Stream utilisé pour lire un fichier. (Hérité de Control) |
RaiseBubbleEvent(Object, EventArgs) |
Assigne les sources éventuelles de l'événement et ses informations au parent du contrôle. (Hérité de Control) |
RemovedControl(Control) |
Méthode appelée après la suppression d’un contrôle enfant de la collection Controls de l’objet Control. (Hérité de Control) |
Render(HtmlTextWriter) |
Envoie le contenu du contrôle serveur à un objet HtmlTextWriter, qui écrit le contenu à rendre sur le client. (Hérité de Control) |
RenderChildren(HtmlTextWriter) |
Produit le contenu des enfants d'un contrôle serveur dans un objet HtmlTextWriter fourni qui écrit le contenu à restituer sur le client. (Hérité de Control) |
RenderControl(HtmlTextWriter) |
Envoie le contenu du contrôle serveur à un objet HtmlTextWriter fourni et stocke les informations de traçage sur le contrôle si le traçage est activé. (Hérité de Control) |
RenderControl(HtmlTextWriter, ControlAdapter) |
Génère le contenu du contrôle serveur dans un objet HtmlTextWriter à l'aide d'un objet ControlAdapter fourni. (Hérité de Control) |
ResolveAdapter() |
Obtient l'adaptateur de contrôles responsable du rendu du contrôle spécifié. (Hérité de Control) |
ResolveClientUrl(String) |
Obtient une URL qui peut être utilisée par le navigateur. (Hérité de Control) |
ResolveUrl(String) |
Convertit une URL en une URL que le client soit en mesure d'utiliser. (Hérité de Control) |
SaveControlState() |
Enregistre tous les changements d’état de contrôle serveur qui ont eu lieu depuis que la page a été publiée sur le serveur. (Hérité de Control) |
SaveViewState() |
Enregistre les changements d’état d’affichage du contrôle serveur qui se sont produits depuis que la page a été republiée sur le serveur. (Hérité de Control) |
SetDesignModeState(IDictionary) |
Définit les données au moment du design pour un contrôle. (Hérité de Control) |
SetRenderMethodDelegate(RenderMethod) |
Assigne un délégué de gestionnaires d'événements pour générer le rendu du contrôle serveur et de son contenu dans son contrôle parent. (Hérité de Control) |
SetTraceData(Object, Object) |
Définit les données de trace pour le suivi du rendu des données au moment du design à l'aide de la clé des données de trace et de la valeur des données de trace. (Hérité de Control) |
SetTraceData(Object, Object, Object) |
Définit les données de trace pour le suivi du rendu des données au moment du design, à l'aide de l'objet suivi, de la clé des données de trace et de la valeur des données de trace. (Hérité de Control) |
ToString() |
Retourne une chaîne qui représente l'objet actuel. (Hérité de Object) |
TrackViewState() |
Provoque le suivi des modifications de l'état d'affichage pour le contrôle serveur afin qu'elles puissent être stockées dans l'objet StateBag du contrôle serveur. Cet objet est accessible via la propriété ViewState. (Hérité de Control) |
Événements
DataBinding |
Se produit lorsque le contrôle serveur se lie à une source de données. (Hérité de Control) |
Disposed |
Se produit lorsqu'un contrôle serveur est libéré de la mémoire, ce qui constitue la dernière étape du cycle de vie d'un contrôle serveur en cas de demande d'une page ASP.NET. (Hérité de Control) |
Init |
Se produit lorsque le contrôle serveur est initialisé, ce qui constitue la première étape de son cycle de vie. (Hérité de Control) |
Load |
Se produit lorsque le contrôle serveur est chargé dans l'objet Page. (Hérité de Control) |
PreRender |
Se produit après le chargement de l'objet Control mais avant le rendu. (Hérité de Control) |
Unload |
Se produit lorsque le contrôle serveur est déchargé de la mémoire. (Hérité de Control) |
Implémentations d’interfaces explicites
IControlBuilderAccessor.ControlBuilder |
Pour obtenir une description de ce membre, consultez ControlBuilder. (Hérité de Control) |
IControlDesignerAccessor.GetDesignModeState() |
Pour obtenir une description de ce membre, consultez GetDesignModeState(). (Hérité de Control) |
IControlDesignerAccessor.SetDesignModeState(IDictionary) |
Pour obtenir une description de ce membre, consultez SetDesignModeState(IDictionary). (Hérité de Control) |
IControlDesignerAccessor.SetOwnerControl(Control) |
Pour obtenir une description de ce membre, consultez SetOwnerControl(Control). (Hérité de Control) |
IControlDesignerAccessor.UserData |
Pour obtenir une description de ce membre, consultez UserData. (Hérité de Control) |
IDataBindingsAccessor.DataBindings |
Pour obtenir une description de ce membre, consultez DataBindings. (Hérité de Control) |
IDataBindingsAccessor.HasDataBindings |
Pour obtenir une description de ce membre, consultez HasDataBindings. (Hérité de Control) |
IExpressionsAccessor.Expressions |
Pour obtenir une description de ce membre, consultez Expressions. (Hérité de Control) |
IExpressionsAccessor.HasExpressions |
Pour obtenir une description de ce membre, consultez HasExpressions. (Hérité de Control) |
IParserAccessor.AddParsedSubObject(Object) |
Pour obtenir une description de ce membre, consultez AddParsedSubObject(Object). (Hérité de Control) |
Méthodes d’extension
FindDataSourceControl(Control) |
Retourne la source de données associée au contrôle de données pour le contrôle spécifié. |
FindFieldTemplate(Control, String) |
Retourne le modèle de champ pour la colonne spécifiée dans le conteneur d'attribution de noms du contrôle spécifié. |
FindMetaTable(Control) |
Retourne l'objet Metatable pour le contrôle de données conteneur. |