WebPartManager.CloseWebPart(WebPart) Méthode
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.
Ferme un contrôle WebPart de façon telle qu'il n'est pas restitué sur une page Web, mais qu'il peut être rouvert.
public:
void CloseWebPart(System::Web::UI::WebControls::WebParts::WebPart ^ webPart);
public void CloseWebPart (System.Web.UI.WebControls.WebParts.WebPart webPart);
member this.CloseWebPart : System.Web.UI.WebControls.WebParts.WebPart -> unit
Public Sub CloseWebPart (webPart As WebPart)
Paramètres
- webPart
- WebPart
WebPart ou contrôle serveur fermé dans un WebPartZoneBase.
Exceptions
webPart
a la valeur null
.
webPart
ne figure pas dans la collection Controls.
- ou -
webPart
est un contrôle partagé qui a déjà été fermé par un autre utilisateur.
Exemples
L'exemple de code suivant illustre l'utilisation de la méthode CloseWebPart.
L’exemple de code comporte quatre parties :
Contrôle utilisateur qui vous permet de modifier les modes d’affichage des pages.
Contrôle personnalisé WebPart .
Une page web.
Explication du fonctionnement de l’exemple dans un navigateur.
La première partie de l’exemple de code est le contrôle utilisateur permettant de modifier les modes d’affichage. Vous pouvez obtenir le code source du contrôle utilisateur à partir de la section Exemple de la vue d’ensemble de la WebPartManager classe. Pour plus d’informations sur les modes d’affichage et le fonctionnement du contrôle utilisateur, consultez Procédure pas à pas : modification des modes d’affichage sur une page de composants WebPart.
La deuxième partie de l’exemple de code est le contrôle personnalisé WebPart . 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 utilise l’approche de compilation dynamique ; il n’existe donc aucun Assembly
attribut dans la Register
directive pour ce contrôle en haut de la page web. Pour obtenir une procédure pas à pas qui montre comment compiler, consultez Procédure pas à pas : Développement et utilisation d’un contrôle de serveur web personnalisé.
using System;
using System.Collections;
using System.ComponentModel;
using System.Drawing;
using System.Security.Permissions;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
namespace Samples.AspNet.CS.Controls
{
[AspNetHostingPermission(SecurityAction.Demand,
Level = AspNetHostingPermissionLevel.Minimal)]
[AspNetHostingPermission(SecurityAction.InheritanceDemand,
Level = AspNetHostingPermissionLevel.Minimal)]
public class TextDisplayWebPart : WebPart
{
private String _contentText = null;
TextBox input;
Label DisplayContent;
Literal lineBreak;
[Personalizable(), WebBrowsable]
public String ContentText
{
get { return _contentText; }
set { _contentText = value; }
}
protected override void CreateChildControls()
{
Controls.Clear();
DisplayContent = new Label();
DisplayContent.BackColor = Color.LightBlue;
DisplayContent.Text = this.ContentText;
this.Controls.Add(DisplayContent);
lineBreak = new Literal();
lineBreak.Text = @"<br />";
Controls.Add(lineBreak);
input = new TextBox();
this.Controls.Add(input);
Button update = new Button();
update.Text = "Set Label Content";
update.Click += new EventHandler(this.submit_Click);
this.Controls.Add(update);
}
private void submit_Click(object sender, EventArgs e)
{
// Update the label string.
if (!string.IsNullOrEmpty(input.Text))
{
_contentText = input.Text + @"<br />";
input.Text = String.Empty;
DisplayContent.Text = this.ContentText;
}
}
}
}
Imports System.Collections
Imports System.ComponentModel
Imports System.Drawing
Imports System.Security.Permissions
Imports System.Web
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 Class TextDisplayWebPart
Inherits WebPart
Private _contentText As String = Nothing
Private _fontStyle As String = Nothing
Private input As TextBox
Private DisplayContent As Label
Private lineBreak As Literal
<Personalizable(), WebBrowsable()> _
Public Property ContentText() As String
Get
Return _contentText
End Get
Set(ByVal value As String)
_contentText = value
End Set
End Property
Protected Overrides Sub CreateChildControls()
Controls.Clear()
DisplayContent = New Label()
DisplayContent.BackColor = Color.LightBlue
DisplayContent.Text = Me.ContentText
Me.Controls.Add(DisplayContent)
lineBreak = New Literal()
lineBreak.Text = "<br />"
Controls.Add(lineBreak)
input = New TextBox()
Me.Controls.Add(input)
Dim update As New Button()
update.Text = "Set Label Content"
AddHandler update.Click, AddressOf Me.submit_Click
Me.Controls.Add(update)
End Sub
Private Sub submit_Click(ByVal sender As Object, _
ByVal e As EventArgs)
' Update the label string.
If input.Text <> String.Empty Then
_contentText = input.Text + "<br />"
input.Text = String.Empty
DisplayContent.Text = Me.ContentText
End If
End Sub
End Class
End Namespace
La troisième partie de l’exemple de code est la page Web. La page contient une CatalogZone zone, avec un <asp:pagecatalogpart>
élément déclaré dans celle-ci. Voici ce qui contiendra le contrôle fermé WebPart et permettra aux utilisateurs de le rajouter à la page. La Button1_Click
méthode appelle directement la CloseWebPart méthode pour fermer le contrôle personnalisé WebPart , bien qu’un utilisateur puisse également fermer le contrôle via le menu verbes.
<%@ Page Language="C#" %>
<%@ Register TagPrefix="uc1"
TagName="DisplayModeMenuCS"
Src="~/DisplayModeMenuCS.ascx" %>
<%@ Register TagPrefix="aspSample"
Namespace="Samples.AspNet.CS.Controls"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<script runat="server">
protected void Button1_Click(object sender, EventArgs e)
{
mgr1.CloseWebPart(text1);
}
</script>
<html xmlns="http://www.w3.org/1999/xhtml" >
<head runat="server">
<title>Untitled Page</title>
</head>
<body>
<form id="form1" runat="server">
<asp:WebPartManager ID="mgr1" runat="server" />
<uc1:DisplayModeMenuCS ID="menu1" runat="server" />
<asp:WebPartZone ID="WebPartZone1" runat="server">
<ZoneTemplate>
<aspSample:TextDisplayWebPart ID="text1"
runat="server"
Title="My Text WebPart" />
</ZoneTemplate>
</asp:WebPartZone>
<asp:CatalogZone ID="CatalogZone1" runat="server">
<ZoneTemplate>
<asp:PageCatalogPart ID="PageCatalogPart1" runat="server" />
</ZoneTemplate>
</asp:CatalogZone>
<asp:Button ID="Button1" runat="server"
Text="Close WebPart"
OnClick="Button1_Click" />
</form>
</body>
</html>
<%@ Page Language="vb" %>
<%@ Register TagPrefix="uc1"
TagName="DisplayModeMenuVB"
Src="~/DisplayModeMenuVB.ascx" %>
<%@ Register TagPrefix="aspSample"
Namespace="Samples.AspNet.VB.Controls"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<script runat="server">
Protected Sub Button1_Click(ByVal sender As Object, _
ByVal e As System.EventArgs)
mgr1.CloseWebPart(text1)
End Sub
</script>
<html xmlns="http://www.w3.org/1999/xhtml" >
<head runat="server">
<title>Untitled Page</title>
</head>
<body>
<form id="form1" runat="server">
<asp:WebPartManager ID="mgr1" runat="server" />
<uc1:DisplayModeMenuVB ID="menu1" runat="server" />
<asp:WebPartZone ID="WebPartZone1" runat="server">
<ZoneTemplate>
<aspSample:TextDisplayWebPart ID="text1"
runat="server"
Title="My Text WebPart" />
</ZoneTemplate>
</asp:WebPartZone>
<asp:CatalogZone ID="CatalogZone1" runat="server">
<ZoneTemplate>
<asp:PageCatalogPart ID="PageCatalogPart1" runat="server" />
</ZoneTemplate>
</asp:CatalogZone>
<asp:Button ID="Button1" runat="server"
Text="Close WebPart"
OnClick="Button1_Click" />
</form>
</body>
</html>
Après avoir chargé la page dans un navigateur, fermez le contrôle personnalisé WebPart en cliquant sur le menu verbes (symbole de flèche) dans l’en-tête du contrôle, puis en cliquant sur Fermer. À présent, définissez la page en mode catalogue en sélectionnant Catalogue dans le contrôle de liste déroulante Mode d’affichage . Le catalogue de pages s’affiche avec le contrôle fermé. Activez la case à cocher en regard du contrôle fermé, cliquez sur Ajouter pour l’ajouter à la page, puis cliquez sur Fermer pour retourner la page en mode navigation. Le contrôle est restauré dans la page. Fermez-la à nouveau, cette fois-ci en cliquant sur le bouton Fermer WebPart .
Remarques
La CloseWebPart méthode supprime un ou un WebPart autre contrôle serveur afin qu’il ne soit pas rendu sur la page Web qui le contenait à l’origine. Le contrôle fermé est ajouté à un PageCatalogPart objet, qui conserve une référence au contrôle fermé et permet de restaurer le contrôle sur la page. Un contrôle fermé WebPart apparaît toujours dans la collection référencée par la WebParts propriété .
La fermeture d’un contrôle est différente de sa suppression. Les contrôles fermés sont toujours disponibles pour être restaurés sur une page, mais une instance de contrôle supprimée est définitivement supprimée et ne peut jamais être restaurée. Qu’un WebPart contrôle serveur ou soit statique (déclaré dans le balisage d’une page) ou dynamique (ajouté à la page par programmation ou par un utilisateur à partir d’un catalogue de composants WebPart), il peut être fermé et rouvert sur une page.
En règle générale, les utilisateurs peuvent fermer un WebPart contrôle en cliquant sur son menu verbes et en sélectionnant le verbe fermer. Un contrôle peut également être fermé en appelant directement la CloseWebPart méthode et en lui transmettant une référence à webPart
.
Sur une page où WebPart les contrôles ont été fermés, si un développeur déclare un <asp:catalogzone>
élément et y ajoute un <asp:pagecatalogpart>
élément, il fournit une interface utilisateur simple permettant aux utilisateurs de restaurer des contrôles fermés sur la page au moment de l’exécution. Les utilisateurs peuvent basculer la page en mode d’affichage du catalogue, et les contrôles fermés s’affichent dans le catalogue de pages. Les utilisateurs peuvent sélectionner des contrôles fermés et les ajouter à la page à l’emplacement qu’ils souhaitent, puis les contrôles sélectionnés sont restaurés dans la page et rendus normalement.
Lorsque la CloseWebPart méthode est appelée, elle déclenche plusieurs événements : WebPartClosing, SelectedWebPartChanging (s’il existe plusieurs contrôles) et WebPartsDisconnecting (s’il existe des contrôles connectés). Normalement, les développeurs peuvent annuler ces événements, mais dans certains cas, il n’est pas possible de les annuler. Pour plus d’informations, consultez la documentation relative aux WebPartClosingévénements , SelectedWebPartChanginget WebPartsDisconnecting .