WebPartManager.CloseWebPart(WebPart) Método
Definição
Importante
Algumas informações dizem respeito a um produto pré-lançado que pode ser substancialmente modificado antes de ser lançado. A Microsoft não faz garantias, de forma expressa ou implícita, em relação à informação aqui apresentada.
Fecha um WebPart controlo de forma a que não seja renderizado numa página Web, mas possa ser reaberto.
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)
Parâmetros
- webPart
- WebPart
A WebPart ou o controlo do servidor que está a ser fechado em um WebPartZoneBase.
Exceções
webPart é null.
webPart não está na Controls coleção.
-ou-
webPart é um controlo partilhado e já foi encerrado por outro utilizador.
Exemplos
O exemplo de código seguinte demonstra como usar o CloseWebPart método.
O exemplo de código tem quatro partes:
Um controlo do utilizador que permite alterar os modos de visualização da página.
Um controlo personalizado WebPart .
Uma página web.
Uma explicação de como o exemplo funciona num navegador.
A primeira parte do exemplo de código é o controlo do utilizador para alterar os modos de visualização. Pode obter o código-fonte do controlo de utilizador a partir da secção Exemplo da WebPartManager visão geral da classe. Para mais informações sobre modos de visualização e como funciona o controlo do utilizador, consulte Walkthrough: Changing Display Modes on a Web Parts Page.
A segunda parte do exemplo do código é o controlo personalizado WebPart . Para que o exemplo de código seja executado, tens de compilar este código-fonte. Pode compilar explicitamente e colocar o assembly resultante na pasta Bin do seu site ou na cache global assembly. Alternativamente, pode colocar o código-fonte na pasta App_Code do seu site, onde será compilado dinamicamente em tempo de execução. Este exemplo utiliza a abordagem de compilação dinâmica; assim, não Assembly existe qualquer atributo na Register diretiva para este controlo no topo da página Web. Para um guia que demonstra como compilar, consulte Guia: Desenvolvimento e Utilização de um Controlo de Servidor Web Personalizado.
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
A terceira parte do exemplo do código é a página Web. A página contém uma CatalogZone zona, com um <asp:pagecatalogpart> elemento declarado dentro dela. Isto é o que irá conter o controlo fechado WebPart e permitir aos utilizadores adicioná-lo novamente à página. O Button1_Click método chama diretamente o CloseWebPart método para fechar o controlo personalizado WebPart , embora o utilizador também possa fechar o controlo através do menu verbos.
<%@ 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>
Depois de carregar a página num navegador, feche o controlo personalizado WebPart clicando no menu verbos (o símbolo da seta) no cabeçalho do controlo e clicando em Fechar. Agora mude a página para modo catálogo selecionando Catálogo no menu suspenso de controlo da lista Modo de Exibição . O catálogo de páginas aparece com o controlo fechado. Selecione a caixa de seleção ao lado do controlo fechado, clique em Adicionar para adicionar à página e depois clique em Fechar para voltar a página ao modo de navegação. O controlo é restaurado na página. Agora fecha novamente, desta vez clicando no botão Fechar WebPart .
Observações
O CloseWebPart método remove um WebPart ou outro controlo de servidor para que não seja renderizado na página Web que originalmente o continha. O controlo fechado é adicionado a um PageCatalogPart objeto, o que mantém uma referência ao controlo fechado e permite restaurar o controlo na página. Um controlo fechado WebPart ainda aparece na coleção referenciada pela WebParts propriedade.
Fechar um controlo é diferente de o apagar. Controlos fechados ainda estão disponíveis para serem restaurados numa página, mas uma instância de controlo eliminada é removida permanentemente e nunca pode ser restaurada. Independentemente de um WebPart controlo de servidor ou servidor ser estático (declarado na marcação de uma página) ou dinâmico (adicionado à página programaticamente ou por um utilizador a partir de um catálogo de Web Parts), pode ser fechado e reaberto numa página.
Normalmente, os utilizadores podem fechar um WebPart controlo clicando no menu de verbos e selecionando o verbo fechar. Um controlo também pode ser fechado chamando diretamente o CloseWebPart método e passando-lhe uma referência para webPart.
Numa página onde WebPart os controlos foram fechados, se um programador declarar um <asp:catalogzone> elemento e dentro dele adicionar um <asp:pagecatalogpart> elemento, fornece uma interface de utilizador simples (UI) para os utilizadores restaurarem controlos fechados na página em tempo de execução. Os utilizadores podem colocar a página em modo de visualização de catálogo, e os controlos fechados aparecerão dentro do catálogo da página. Os utilizadores podem selecionar controlos fechados e adicioná-los de volta à página na posição que desejarem, e depois os controlos selecionados são restaurados na página e renderizados normalmente.
Quando o CloseWebPart método é chamado, gera vários eventos: WebPartClosing, SelectedWebPartChanging (se existirem múltiplos controlos), e WebPartsDisconnecting (se existirem controlos ligados). Normalmente, os programadores podem cancelar estes eventos, mas em certos casos não é possível cancelá-los. Para mais detalhes, consulte a documentação dos WebPartClosingeventos , SelectedWebPartChanging, e WebPartsDisconnecting .