WebPartManager.CloseWebPart(WebPart) Metoda
Definicja
Ważne
Niektóre informacje odnoszą się do produktu w wersji wstępnej, który może zostać znacząco zmodyfikowany przed wydaniem. Firma Microsoft nie udziela żadnych gwarancji, jawnych lub domniemanych, w odniesieniu do informacji podanych w tym miejscu.
Zamyka kontrolkę WebPart w taki sposób, że nie jest renderowana na stronie sieci Web, ale można ją ponownie otworzyć.
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
Kontrolka WebPart serwera lub, która jest zamykana w obiekcie WebPartZoneBase.
Wyjątki
webPart
to null
.
webPart
nie znajduje się w kolekcji Controls .
-lub-
webPart
jest udostępnioną kontrolką i została już zamknięta przez innego użytkownika.
Przykłady
W poniższym przykładzie kodu pokazano, jak używać CloseWebPart metody .
Przykładowy kod ma cztery części:
Kontrolka użytkownika, która umożliwia zmianę trybów wyświetlania strony.
Kontrolka niestandardowa WebPart .
Strona sieci Web.
Wyjaśnienie sposobu działania przykładu w przeglądarce.
Pierwszą częścią przykładu kodu jest kontrolka użytkownika do zmieniania trybów wyświetlania. Kod źródłowy kontrolki użytkownika można uzyskać z sekcji Przykład w przeglądzie WebPartManager klasy. Aby uzyskać więcej informacji na temat trybów wyświetlania i sposobu działania kontrolki użytkownika, zobacz Przewodnik: zmienianie trybów wyświetlania na stronie składników Web Part.
Drugą częścią przykładu kodu jest kontrolka niestandardowa WebPart . Aby przykład kodu został uruchomiony, należy skompilować ten kod źródłowy. Można je jawnie skompilować i umieścić wynikowy zestaw w folderze Bin witryny sieci Web lub globalnej pamięci podręcznej zestawów. Możesz też umieścić kod źródłowy w folderze App_Code witryny, w którym będzie dynamicznie kompilowany w czasie wykonywania. W tym przykładzie użyto podejścia do kompilacji dynamicznej; w dyrektywie nie Assembly
ma atrybutu Register
dla tej kontrolki w górnej części strony sieci Web. Aby zapoznać się z przewodnikiem, który pokazuje, jak skompilować, zobacz Przewodnik: opracowywanie i używanie niestandardowej kontrolki serwera sieci Web.
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
Trzecią częścią przykładu kodu jest strona sieci Web. Strona zawiera strefę CatalogZone z elementem zadeklarowanym <asp:pagecatalogpart>
w nim. Jest to, co będzie zawierać zamkniętą WebPart kontrolkę i umożliwić użytkownikom dodawanie jej z powrotem do strony. Metoda Button1_Click
bezpośrednio wywołuje metodę CloseWebPart , aby zamknąć kontrolkę niestandardową WebPart , chociaż użytkownik może również zamknąć kontrolkę za pomocą menu czasowników.
<%@ 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 załadowaniu strony w przeglądarce zamknij kontrolkę niestandardową WebPart , klikając menu czasowników (symbol strzałki) w nagłówku kontrolki i klikając przycisk Zamknij. Teraz zmień stronę w tryb wykazu, wybierając pozycję Wykaz w kontrolce listy rozwijanej Tryb wyświetlania . Wykaz stron zostanie wyświetlony z zamkniętą kontrolką. Zaznacz pole wyboru obok zamkniętej kontrolki, kliknij przycisk Dodaj , aby dodać go do strony, a następnie kliknij przycisk Zamknij , aby zwrócić stronę do trybu przeglądania. Kontrolka zostanie przywrócona do strony. Teraz zamknij go ponownie, tym razem klikając przycisk Zamknij składnik Web Part .
Uwagi
Metoda CloseWebPart usuwa kontrolkę serwera lub inną WebPart , aby nie była renderowana na stronie sieci Web, która pierwotnie ją zawierała. Zamknięta kontrolka jest dodawana do PageCatalogPart obiektu, który utrzymuje odwołanie do zamkniętej kontrolki i umożliwia przywrócenie kontrolki do strony. Zamknięta WebPart kontrolka nadal pojawia się w kolekcji, do której WebParts odwołuje się właściwość .
Zamykanie kontrolki różni się od jej usuwania. Zamknięte kontrolki są nadal dostępne do przywrócenia do strony, ale usunięte wystąpienie kontrolki jest trwale usuwane i nigdy nie można go przywrócić. Niezależnie od tego, czy WebPart kontrolka lub serwera jest statyczna (zadeklarowana w znacznikach strony) lub dynamiczna (dodawana do strony programowo lub przez użytkownika z wykazu składników Web Part), można ją zamknąć i ponownie otworzyć na stronie.
Zazwyczaj użytkownicy mogą zamknąć kontrolkę WebPart , klikając menu czasowników i wybierając czasownik zamykający. Kontrolkę można również zamknąć, wywołując bezpośrednio metodę CloseWebPart i przekazując jej odwołanie do webPart
metody .
Na stronie, na której WebPart kontrolki zostały zamknięte, jeśli deweloper deklaruje <asp:catalogzone>
element, a w nim dodaje <asp:pagecatalogpart>
element, udostępnia prosty interfejs użytkownika (UI) dla użytkowników w celu przywrócenia zamkniętych kontrolek do strony w czasie wykonywania. Użytkownicy mogą przełączać stronę do trybu wyświetlania wykazu, a zamknięte kontrolki będą wyświetlane w katalogu stron. Użytkownicy mogą wybierać zamknięte kontrolki i dodawać je z powrotem do strony w dowolnej żądanej pozycji, a następnie wybrane kontrolki są przywracane do strony i renderowane jako normalne.
CloseWebPart Gdy metoda jest wywoływana, zgłasza kilka zdarzeń: WebPartClosing, SelectedWebPartChanging (jeśli istnieje wiele kontrolek) i WebPartsDisconnecting (jeśli istnieją połączone kontrolki). Zwykle deweloperzy mogą anulować te zdarzenia, ale w niektórych przypadkach nie można ich anulować. Aby uzyskać szczegółowe informacje, zobacz dokumentację dotyczącą zdarzeń WebPartClosing, SelectedWebPartChangingi WebPartsDisconnecting .
Dotyczy
Zobacz też
Opinia
https://aka.ms/ContentUserFeedback.
Dostępne już wkrótce: W 2024 r. będziemy stopniowo wycofywać zgłoszenia z serwisu GitHub jako mechanizm przesyłania opinii na temat zawartości i zastępować go nowym systemem opinii. Aby uzyskać więcej informacji, sprawdź:Prześlij i wyświetl opinię dla