Sdílet prostřednictvím


WebPartManager.CloseWebPart(WebPart) Metoda

Definice

WebPart Zavře ovládací prvek takovým způsobem, že není vykreslen na webové stránce, ale lze jej znovu otevřít.

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)

Parametry

webPart
WebPart

Řízení WebPart serveru, které je uzavřeno WebPartZoneBasev .

Výjimky

webPart je null.

webPart není v kolekci Controls .

nebo

webPart je sdílený ovládací prvek a již byl zavřený jiným uživatelem.

Příklady

Následující příklad kódu ukazuje, jak použít metodu CloseWebPart .

Příklad kódu má čtyři části:

  • Uživatelský ovládací prvek, který umožňuje změnit režimy zobrazení stránky.

  • Vlastní WebPart ovládací prvek.

  • Webová stránka.

  • Vysvětlení fungování příkladu v prohlížeči

První částí příkladu kódu je uživatelský ovládací prvek pro změnu režimů zobrazení. Zdrojový kód pro uživatelský ovládací prvek můžete získat v části Příklad přehledu WebPartManager třídy. Další informace o režimech zobrazení a způsobu fungování uživatelského ovládacího prvku naleznete v tématu Návod: Změna režimů zobrazení na stránce webových částí.

Druhou částí příkladu kódu je vlastní WebPart ovládací prvek. Pro spuštění příkladu kódu je nutné zkompilovat tento zdrojový kód. Můžete jej explicitně zkompilovat a výsledné sestavení umístit do složky Bin vašeho webu nebo globální mezipaměti sestavení. Případně můžete zdrojový kód umístit do složky App_Code webu, kde se bude dynamicky kompilovat za běhu. Tento příklad používá přístup dynamické kompilace; proto není Assembly v direktivě Register pro tento ovládací prvek v horní části webové stránky žádný atribut. Návod, který ukazuje, jak se zkompilovat, naleznete v části Návod: Vývoj a použití vlastního ovládacího prvku webového serveru.

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

Třetí částí příkladu kódu je webová stránka. Stránka obsahuje zónu CatalogZone s prvkem deklarovaným <asp:pagecatalogpart> v ní. Toto je to, co bude obsahovat uzavřený WebPart ovládací prvek a umožní uživatelům přidat ho zpět na stránku. Metoda Button1_Click přímo volá metodu CloseWebPart pro zavření vlastního WebPart ovládacího prvku, i když uživatel může ovládací prvek také zavřít prostřednictvím nabídky sloves.

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

Po načtení stránky v prohlížeči zavřete vlastní WebPart ovládací prvek kliknutím na nabídku sloves (symbol šipky) v záhlaví ovládacího prvku a kliknutím na Tlačítko Zavřít. Teď změňte stránku na režim katalogu tak, že v ovládacím prvku Rozevírací seznam Režim zobrazení vyberete Katalog. Katalog stránek se zobrazí s uzavřeným ovládacím prvku. Zaškrtněte políčko vedle uzavřeného ovládacího prvku, kliknutím na tlačítko Přidat ho přidejte na stránku a potom kliknutím na tlačítko Zavřít vraťte stránku do režimu procházení. Ovládací prvek se obnoví na stránku. Teď ho znovu zavřete kliknutím na tlačítko Zavřít webovou část .

Poznámky

Metoda CloseWebPart odebere WebPart ovládací prvek serveru nebo jiný ovládací prvek serveru tak, aby nebyl vykreslen na webové stránce, která ho původně obsahovala. Uzavřený ovládací prvek se přidá do objektu PageCatalogPart , který udržuje odkaz na uzavřený ovládací prvek a umožňuje obnovit ovládací prvek na stránku. Uzavřený WebPart ovládací prvek se stále zobrazuje v kolekci odkazované vlastností WebParts .

Zavření ovládacího prvku se liší od jeho odstranění. Zavřené ovládací prvky jsou stále k dispozici k obnovení na stránku, ale odstraněná instance ovládacího prvku je trvale odebrána a nelze ji nikdy obnovit. Bez ohledu na to, jestli WebPart je ovládací prvek serveru statický (deklarovaný v kódu stránky) nebo dynamický (přidaný na stránku prostřednictvím kódu programu nebo uživatelem z katalogu webových částí), lze ho na stránce zavřít a znovu otevřít.

Uživatelé obvykle můžou ovládací prvek zavřít WebPart kliknutím na jeho nabídku sloves a výběrem příkazu zavřít. Ovládací prvek lze také zavřít přímo voláním CloseWebPart metody a předáním odkazu na webPart.

Na stránce WebPart , kde byly ovládací prvky uzavřeny, pokud vývojář deklaruje <asp:catalogzone> prvek a v něm přidá <asp:pagecatalogpart> prvek, poskytuje jednoduché uživatelské rozhraní (UI) pro uživatele obnovit zavřené ovládací prvky na stránku za běhu. Uživatelé můžou stránku přepnout do režimu zobrazení katalogu a zavřené ovládací prvky se zobrazí v katalogu stránek. Uživatelé můžou vybrat zavřené ovládací prvky a přidat je zpět na stránku v libovolném místě, kde chtějí, a pak se vybrané ovládací prvky obnoví na stránku a zobrazí se jako normální.

CloseWebPart Při zavolání metody vyvolá několik událostí: WebPartClosingSelectedWebPartChanging , (pokud existuje více ovládacích prvků) a WebPartsDisconnecting (pokud existují připojené ovládací prvky). Obvykle můžou vývojáři tyto události zrušit, ale v některých případech je není možné zrušit. Podrobnosti najdete v dokumentaci k nástroji WebPartClosing, SelectedWebPartChanginga WebPartsDisconnecting událostem.

Platí pro

Viz také