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 die Anzeigemodi der Seite ändern können.

  • Ein benutzerdefiniertes WebPart Steuerelement.

  • Eine Webseite.

  • Eine Erklärung, wie das Beispiel in einem Browser funktioniert.

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 Webpartseite.

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 App_Code Ordner Ihrer Website ablegen, wo er zur Laufzeit dynamisch kompiliert wird. In diesem Beispiel wird der Ansatz der dynamischen Kompilierung verwendet. daher befindet sich oben auf der Webseite kein Assembly Attribut in der Register Direktive für dieses Steuerelement. 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 enthält das geschlossene WebPart Steuerelement und ermöglicht es Benutzern, es wieder zur Seite 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 Dropdownlistensteuerelement 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 sie nun erneut, indem Sie dieses Mal auf die Schaltfläche WebPart schließen klicken.

Hinweise

Die CloseWebPart -Methode entfernt ein WebPart oder ein 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 behält und es ermöglicht, dass das Steuerelement auf der Seite wiederhergestellt wird. 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. Geschlossene Steuerelemente können weiterhin auf einer Seite wiederhergestellt werden, aber eine gelöschte Steuerelementinstanz wird endgültig entfernt und kann nie wiederhergestellt werden. Unabhängig davon, ob ein Serversteuerelement oder ein WebPart Serversteuerelement statisch (im Markup einer Seite deklariert) oder dynamisch (programmgesteuert oder von einem Benutzer aus einem Webpartkatalog zur Seite hinzugefügt) ist, kann es auf einer Seite geschlossen und erneut geöffnet werden.

In der Regel können Benutzer ein WebPart Steuerelement schließen, indem sie auf das Verbenmenü 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, stellt es eine einfache Benutzeroberfläche (UI) bereit, mit 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 der gewünschten Position wieder der Seite hinzufügen, und dann werden die ausgewählten Steuerelemente auf der Seite wiederhergestellt und als 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. Ausführliche Informationen finden Sie in der Dokumentation zu den WebPartClosingEreignissen , SelectedWebPartChanging, und WebPartsDisconnecting .

Gilt für:

Weitere Informationen