WebPartManager.CloseWebPart(WebPart) Methode

Definitie

Hiermee sluit u een WebPart besturingselement zodanig dat het niet wordt weergegeven op een webpagina, maar opnieuw kan worden geopend.

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)

Parameters

webPart
WebPart

Een WebPart of serverbesturingselement dat wordt gesloten in een WebPartZoneBase.

Uitzonderingen

webPart is null.

webPart bevindt zich niet in de Controls verzameling.

– of –

webPart is een gedeeld besturingselement en is al gesloten door een andere gebruiker.

Voorbeelden

In het volgende codevoorbeeld ziet u hoe u de CloseWebPart methode gebruikt.

Het codevoorbeeld heeft vier delen:

  • Een gebruikersbeheer waarmee u de weergavemodi voor pagina's kunt wijzigen.

  • Een aangepast besturingselement WebPart .

  • Een webpagina.

  • Een uitleg van hoe het voorbeeld werkt in een browser.

Het eerste deel van het codevoorbeeld is het gebruikersbeheer voor het wijzigen van weergavemodi. U kunt de broncode voor het gebruikersbeheer verkrijgen in de sectie Voorbeeld van het WebPartManager klassenoverzicht. Zie Walkthrough: Weergavemodi wijzigen op een pagina met webonderdelen voor meer informatie over weergavemodi en hoe het gebruikersbeheer werkt.

Het tweede deel van het codevoorbeeld is het aangepaste WebPart besturingselement. Als u het codevoorbeeld wilt uitvoeren, moet u deze broncode compileren. U kunt deze expliciet compileren en de resulterende assembly in de map Bin van uw website of de globale assemblycache plaatsen. U kunt de broncode ook in de map App_Code van uw site plaatsen, waar deze dynamisch wordt gecompileerd tijdens runtime. In dit voorbeeld wordt de dynamische compilatiebenadering gebruikt; Er is dus geen Assembly kenmerk in de Register richtlijn voor dit besturingselement boven aan de webpagina. Zie Walkthrough: Een aangepast webserverbeheer ontwikkelen en gebruiken voor een overzicht van hoe u compileert.

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

Het derde deel van het codevoorbeeld is de webpagina. De pagina bevat een CatalogZone zone, met een <asp:pagecatalogpart> element dat erin is gedeclareerd. Dit is wat het gesloten WebPart besturingselement bevat en gebruikers in staat stelt het weer toe te voegen aan de pagina. De Button1_Click methode roept de CloseWebPart methode rechtstreeks aan om het aangepaste WebPart besturingselement te sluiten, hoewel een gebruiker het besturingselement ook kan sluiten via het menu Werkwoorden.

<%@ 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>

Nadat u de pagina in een browser hebt geladen, sluit u het aangepaste WebPart besturingselement door te klikken op het menu Werkwoorden (het pijlsymbool) in de koptekst van het besturingselement en op Sluiten te klikken. Wijzig nu de pagina in de catalogusmodus door Catalogus te selecteren in de vervolgkeuzelijst Weergavemodus . De paginacatalogus wordt weergegeven met het gesloten besturingselement. Schakel het selectievakje naast het gesloten besturingselement in, klik op Toevoegen om het toe te voegen aan de pagina en klik vervolgens op Sluiten om de pagina terug te keren naar de bladermodus. Het besturingselement wordt teruggezet naar de pagina. Sluit deze keer opnieuw door op de knop Webonderdeel sluiten te klikken.

Opmerkingen

Met CloseWebPart de methode wordt een WebPart of ander serverbeheer verwijderd, zodat deze niet wordt weergegeven op de webpagina die het oorspronkelijk bevatte. Het gesloten besturingselement wordt toegevoegd aan een PageCatalogPart object, dat een verwijzing naar het gesloten besturingselement onderhoudt en het mogelijk maakt dat het besturingselement wordt hersteld naar de pagina. Er wordt nog steeds een gesloten WebPart besturingselement weergegeven in de verzameling waarnaar wordt verwezen door de WebParts eigenschap.

Het sluiten van een besturingselement verschilt van het verwijderen ervan. Gesloten besturingselementen zijn nog steeds beschikbaar om te worden hersteld naar een pagina, maar een verwijderd exemplaar van een besturingselement wordt permanent verwijderd en kan nooit worden hersteld. Ongeacht of een WebPart besturingselement of serverbeheer statisch is (gedeclareerd in de opmaak van een pagina) of dynamisch (via programmacode aan de pagina of door een gebruiker uit een webonderdelencatalogus) is toegevoegd, kan het worden gesloten en opnieuw worden geopend op een pagina.

Normaal gesproken kunnen gebruikers een WebPart besturingselement sluiten door te klikken op het menu met werkwoorden en het sluiten van het werkwoord te selecteren. Een besturingselement kan ook worden gesloten door de CloseWebPart methode rechtstreeks aan te roepen en er een verwijzing naar door te webPartgeven.

Op een pagina waar WebPart besturingselementen zijn gesloten, als een ontwikkelaar een <asp:catalogzone> element declareert en binnen het element een <asp:pagecatalogpart> element toevoegt, biedt het een eenvoudige gebruikersinterface (UI) voor gebruikers om gesloten besturingselementen tijdens runtime te herstellen naar de pagina. Gebruikers kunnen de pagina overschakelen naar de catalogusweergavemodus en de gesloten besturingselementen worden weergegeven in de paginacatalogus. Gebruikers kunnen gesloten besturingselementen selecteren en ze weer toevoegen aan de pagina op elke gewenste positie en vervolgens worden de geselecteerde besturingselementen teruggezet naar de pagina en weergegeven als normaal.

Wanneer de CloseWebPart methode wordt aangeroepen, worden verschillende gebeurtenissen gegenereerd: WebPartClosing, SelectedWebPartChanging (als er meerdere besturingselementen zijn) en WebPartsDisconnecting (als er verbonden besturingselementen zijn). Normaal gesproken kunnen ontwikkelaars deze gebeurtenissen annuleren, maar in bepaalde gevallen is het niet mogelijk om ze te annuleren. Zie de documentatie voor de WebPartClosing, SelectedWebPartChangingen WebPartsDisconnecting gebeurtenissen voor meer informatie.

Van toepassing op

Zie ook