WebPartManager.CloseWebPart(WebPart) Methode

Definition

Schließt ein WebPart-Steuerelement, sodass es auf einer Webseite zwar nicht wiedergegeben wird, aber erneut geöffnet werden kann.

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)

Parameter

webPart
WebPart

Ein WebPart-Steuerelement oder Serversteuerelement, das in einer WebPartZoneBase geschlossen wird.

Ausnahmen

webPart ist null.

webPart ist nicht in der Controls-Auflistung enthalten.

- oder -

webPart ist ein freigegebenes Steuerelement und wurde bereits von einem anderen Benutzer geschlossen.

Beispiele

Das folgende Codebeispiel zeigt, wie Sie die CloseWebPart-Methode verwenden.

Das Codebeispiel umfasst vier Teile:

  • Ein Benutzersteuerelement, mit dem Sie seitenanzeigemodi ändern können.

  • Ein benutzerdefiniertes WebPart Steuerelement.

  • Eine Webseite.

  • Eine Erläuterung der Funktionsweise des Beispiels in einem Browser.

Der erste Teil des Codebeispiels ist das Benutzersteuerelement zum Ändern der Anzeigemodi. Sie können den Quellcode für das Benutzersteuerelement im Abschnitt Beispiel der WebPartManager Klassenübersicht abrufen. Weitere Informationen zu Anzeigemodi und zur Funktionsweise des Benutzersteuerelements finden Sie unter Exemplarische Vorgehensweise: Ändern von Anzeigemodi auf einer Webparts-Seite.

Der zweite Teil des Codebeispiels ist das benutzerdefinierte WebPart Steuerelement. Damit das Codebeispiel ausgeführt werden kann, müssen Sie diesen Quellcode kompilieren. Sie können sie explizit kompilieren und die resultierende Assembly im Ordner Bin ihrer Website oder im globalen Assemblycache ablegen. Alternativ können Sie den Quellcode im Ordner App_Code Ihrer Website ablegen, wo er zur Laufzeit dynamisch kompiliert wird. In diesem Beispiel wird der Dynamische Kompilierungsansatz verwendet. Daher ist in der Register -Direktive für dieses Steuerelement oben auf der Webseite kein Assembly Attribut vorhanden. Eine exemplarische Vorgehensweise, die das Kompilieren veranschaulicht, finden Sie unter Exemplarische Vorgehensweise: Entwickeln und Verwenden eines benutzerdefinierten Webserversteuerelements.

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

Der dritte Teil des Codebeispiels ist die Webseite. Die Seite enthält eine CatalogZone Zone, in der ein <asp:pagecatalogpart> Element deklariert ist. Dies ist das , was das geschlossene WebPart Steuerelement enthält und es Benutzern ermöglicht, es der Seite wieder hinzuzufügen. Die Button1_Click -Methode ruft die CloseWebPart -Methode direkt auf, um das benutzerdefinierte WebPart Steuerelement zu schließen, obwohl ein Benutzer das Steuerelement auch über das Verbenmenü schließen kann.

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

Nachdem Sie die Seite in einem Browser geladen haben, schließen Sie das benutzerdefinierte WebPart Steuerelement, indem Sie in der Kopfzeile des Steuerelements auf das Verbenmenü (das Pfeilsymbol) klicken und auf Schließen klicken. Ändern Sie nun die Seite in den Katalogmodus, indem Sie im Dropdown-Listensteuerelement Anzeigemodus die Option Katalog auswählen. Der Seitenkatalog wird mit dem geschlossenen Steuerelement angezeigt. Aktivieren Sie das Kontrollkästchen neben dem geschlossenen Steuerelement, klicken Sie auf Hinzufügen , um es der Seite hinzuzufügen, und klicken Sie dann auf Schließen , um die Seite in den Browsermodus zurückzugeben. Das Steuerelement wird auf der Seite wiederhergestellt. Schließen Sie es nun erneut, indem Sie auf die Schaltfläche WebPart schließen klicken.

Hinweise

Die CloseWebPart -Methode entfernt ein oder ein WebPart anderes Serversteuerelement, sodass es nicht auf der Webseite gerendert wird, die es ursprünglich enthielt. Das geschlossene Steuerelement wird einem PageCatalogPart -Objekt hinzugefügt, das einen Verweis auf das geschlossene Steuerelement verwaltet und ermöglicht die Wiederherstellung des Steuerelements auf der Seite. Ein geschlossenes WebPart Steuerelement wird weiterhin in der Auflistung angezeigt, auf die von der WebParts -Eigenschaft verwiesen wird.

Das Schließen eines Steuerelements unterscheidet sich vom Löschen eines Steuerelements. Geschlossene Steuerelemente können weiterhin auf einer Seite wiederhergestellt werden, aber ein gelöschtes Steuerelement instance wird dauerhaft entfernt und kann nie wiederhergestellt werden. Unabhängig davon, ob ein - oder - WebPart Serversteuerelement statisch (im Markup einer Seite deklariert) oder dynamisch (programmgesteuert oder von einem Benutzer aus einem Webpartskatalog zur Seite hinzugefügt) ist, kann es geschlossen und erneut auf einer Seite geöffnet werden.

In der Regel können Benutzer ein WebPart Steuerelement schließen, indem sie auf das Menü "Verben" klicken und das Verb schließen auswählen. Ein Steuerelement kann auch geschlossen werden, indem die CloseWebPart -Methode direkt aufgerufen und ein Verweis auf webPartübergeben wird.

Wenn ein Entwickler auf einer Seite, auf der WebPart Steuerelemente geschlossen wurden, ein <asp:catalogzone> Element deklariert und darin ein <asp:pagecatalogpart> Element hinzufügt, wird eine einfache Benutzeroberfläche (UI) bereitgestellt, auf der Benutzer geschlossene Steuerelemente zur Laufzeit auf der Seite wiederherstellen können. Benutzer können die Seite in den Kataloganzeigemodus wechseln, und die geschlossenen Steuerelemente werden im Seitenkatalog angezeigt. Benutzer können geschlossene Steuerelemente auswählen und sie an beliebiger Position wieder der Seite hinzufügen. Anschließend werden die ausgewählten Steuerelemente auf der Seite wiederhergestellt und normal gerendert.

Wenn die CloseWebPart -Methode aufgerufen wird, löst sie mehrere Ereignisse aus: WebPartClosing, SelectedWebPartChanging (wenn mehrere Steuerelemente vorhanden sind) und WebPartsDisconnecting (wenn verbundene Steuerelemente vorhanden sind). Normalerweise können Entwickler diese Ereignisse abbrechen, aber in bestimmten Fällen ist es nicht möglich, sie abzubrechen. Weitere Informationen finden Sie in der Dokumentation für die WebPartClosingEreignisse , SelectedWebPartChangingund WebPartsDisconnecting .

Gilt für:

Weitere Informationen