WebPartManager.CloseWebPart(WebPart) Metoda
Definice
Důležité
Některé informace platí pro předběžně vydaný produkt, který se může zásadně změnit, než ho výrobce nebo autor vydá. Microsoft neposkytuje žádné záruky, výslovné ani předpokládané, týkající se zde uváděných informací.
Zavře ovládací prvek tak, aby se nevykresloval WebPart na webové stránce, ale bylo možné ho 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
Ovládací WebPart prvek nebo serveru, který je zavřený v WebPartZoneBase.
Výjimky
webPart
je null
.
webPart
není v kolekci Controls .
-nebo-
webPart
je sdílený ovládací prvek a byl již uzavř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 mě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 fungování uživatelského ovládacího prvku najdete 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. Aby se příklad kódu spustil, musíte tento zdrojový kód zkompilovat. Můžete ho explicitně zkompilovat a umístit výsledné sestavení do složky Bin 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í v direktivě Register
pro tento ovládací prvek v horní části webové stránky žádný Assembly
atribut. Návod, který ukazuje, jak kompilovat, najdete v tématu 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 deklarovaným prvkem <asp:pagecatalogpart>
. To 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 k zavření vlastního WebPart ovládacího prvku, i když uživatel může také zavřít ovládací prvek 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 Zavřít. Teď změňte stránku do režimu katalogu tak, že v ovládacím prvku rozevíracího seznamu 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 Přidat ho přidejte na stránku a potom kliknutím na Zavřít vraťte stránku do režimu procházení. Ovládací prvek se obnoví na stránce. Teď ji znovu zavřete, tentokrát kliknutím na tlačítko Zavřít webovou část .
Poznámky
Metoda CloseWebPart odebere WebPart nebo jiný serverový ovládací prvek tak, aby nebyl vykreslen na webové stránce, která ji původně obsahovala. Uzavřený ovládací prvek je přidán do objektu PageCatalogPart , který udržuje odkaz na uzavřený ovládací prvek a umožňuje obnovení ovládacího prvku na stránku. Uzavřený WebPart ovládací prvek se stále zobrazuje v kolekci, na kterou WebParts vlastnost odkazuje.
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, zda WebPart je ovládací prvek nebo server statický (deklarovaný ve značkách stránky) nebo dynamický (přidán na stránku programově 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 nabídku sloves a výběrem příkazu zavřít. Ovládací prvek lze také zavřít přímým voláním CloseWebPart metody a předáním odkazu na webPart
.
Pokud vývojář na stránce, kde WebPart byly ovládací prvky zavřené, deklaruje <asp:catalogzone>
prvek a v rámci něj přidá <asp:pagecatalogpart>
prvek, poskytuje uživatelům jednoduché uživatelské rozhraní, které uživatelům umožní obnovit zavřené ovládací prvky na stránce 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 na libovolné místo, a pak se vybrané ovládací prvky obnoví na stránku a vykreslí se jako obvykle.
Při zavolání CloseWebPart metody vyvolá několik událostí: WebPartClosing, SelectedWebPartChanging (pokud existuje více ovládacích prvků) a WebPartsDisconnecting (pokud existují připojené ovládací prvky). Za normálních okolností 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 událostem WebPartClosing, SelectedWebPartChanginga WebPartsDisconnecting .