Partager via


WebPartManager.CloseWebPart(WebPart) Méthode

Définition

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 .

S’applique à

Voir aussi