WebPart.AllowClose Propriedade
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.
Obtém ou define um valor que indica se um utilizador final pode fechar um WebPart controlo numa página Web.
public:
virtual property bool AllowClose { bool get(); void set(bool value); };
[System.Web.UI.Themeable(false)]
[System.Web.UI.WebControls.WebParts.Personalizable(System.Web.UI.WebControls.WebParts.PersonalizationScope.Shared)]
public virtual bool AllowClose { get; set; }
[<System.Web.UI.Themeable(false)>]
[<System.Web.UI.WebControls.WebParts.Personalizable(System.Web.UI.WebControls.WebParts.PersonalizationScope.Shared)>]
member this.AllowClose : bool with get, set
Public Overridable Property AllowClose As Boolean
Valor de Propriedade
true se o controlo puder ser fechado numa página Web; caso contrário, false. O valor predefinido é true.
- Atributos
Exemplos
O exemplo de código seguinte demonstra como alterar a definição padrão da AllowClose propriedade para um controlo personalizado WebPart , de modo a que não possa ser fechada.
A primeira parte deste exemplo contém o código para um controlo personalizado WebPart chamado TextDisplayWebPart. Note que, no construtor do controlo personalizado, a TextDisplayWebPart.AllowClose propriedade é definida para false, o que tem o efeito de impedir os utilizadores de fecharem o controlo numa página Web. Isto significa que o verbo fechado no menu verbos do controlo será desativado para os utilizadores. 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 de código assume que compilas o código-fonte numa assembleia, colocas-na numa subpasta Bin da tua aplicação Web e referencias a assembleia com uma Register diretiva na tua página Web. Para um guia que demonstra ambos os métodos de compilação, veja Guia: Desenvolvimento e Utilização de um Controlo de Servidor Web Personalizado.
using System;
using System.Security.Permissions;
using System.Web;
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;
public TextDisplayWebPart()
{
this.AllowClose = false;
}
[Personalizable(), WebBrowsable]
public String ContentText
{
get { return _contentText; }
set { _contentText = value; }
}
protected override void CreateChildControls()
{
Controls.Clear();
DisplayContent = new Label();
DisplayContent.BackColor =
System.Drawing.Color.LightBlue;
DisplayContent.Text = this.ContentText;
this.Controls.Add(DisplayContent);
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);
ChildControlsCreated = true;
}
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.Security.Permissions
Imports System.Web
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 input As TextBox
Private DisplayContent As Label
Public Sub New()
Me.AllowClose = False
End Sub
<Personalizable(), WebBrowsable()> _
Public Property ContentText() As String
Get
Return _contentText
End Get
Set
_contentText = value
End Set
End Property
Protected Overrides Sub CreateChildControls()
Controls.Clear()
DisplayContent = New Label()
DisplayContent.Text = Me.ContentText
DisplayContent.BackColor = _
System.Drawing.Color.LightBlue
Me.Controls.Add(DisplayContent)
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)
ChildControlsCreated = True
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 segunda parte do exemplo mostra como referenciar o controlo TextDisplayWebPart numa página web ASP.NET. Note que no <aspSample:TextDisplayWebPart> elemento que faz referência ao controlo, também pode alterar o valor da propriedade definida pelo construtor do controlo. Para permitir que o controlo seja fechado, basta adicionar um AllowClose="true" atributo ao elemento na marcação declarativa.
<%@ page language="C#" %>
<%@ register tagprefix="aspSample"
Namespace="Samples.AspNet.CS.Controls"
Assembly="TextDisplayWebPartCS"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" >
<head id="Head1" runat="server">
<title>ASP.NET Example</title>
</head>
<body>
<form id="Form1" runat="server">
<asp:webpartmanager id="WebPartManager1" runat="server" />
<asp:webpartzone
id="WebPartZone1"
runat="server"
title="Zone 1"
PartChromeType="TitleAndBorder">
<parttitlestyle font-bold="true" ForeColor="#3300cc" />
<partstyle
borderwidth="1px"
borderstyle="Solid"
bordercolor="#81AAF2" />
<zonetemplate>
<aspSample:TextDisplayWebPart
runat="server"
id="textwebpart"
title = "Text Content WebPart" />
</zonetemplate>
</asp:webpartzone>
</form>
</body>
</html>
<%@ page language="VB" %>
<%@ register tagprefix="aspSample"
Namespace="Samples.AspNet.VB.Controls"
Assembly="TextDisplayWebPartVB"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" >
<head id="Head1" runat="server">
<title>ASP.NET Example</title>
</head>
<body>
<form id="Form1" runat="server">
<asp:webpartmanager id="WebPartManager1" runat="server" />
<asp:webpartzone
id="WebPartZone1"
runat="server"
title="Zone 1"
PartChromeType="TitleAndBorder">
<parttitlestyle font-bold="true" ForeColor="#3300cc" />
<partstyle
borderwidth="1px"
borderstyle="Solid"
bordercolor="#81AAF2" />
<zonetemplate>
<aspSample:TextDisplayWebPart
runat="server"
id="textwebpart"
title = "Text Content WebPart" />
</zonetemplate>
</asp:webpartzone>
</form>
</body>
</html>
Observações
Depois de um utilizador fechar um WebPart controlo numa página Web, o controlo deixa de estar visível nem disponível na página. O controlo fechado é adicionado ao catálogo de páginas, uma entidade Web Parts que armazena uma referência ao controlo. Se um programador adicionar um PageCatalogPart controlo à página dentro de um CatalogZone controlo, os utilizadores podem mudar a página para o modo de visualização do catálogo, selecionar o controlo fechado no catálogo de páginas e adicioná-lo novamente à página.
Note
Um controlo fechado WebPart pode ser adicionado de volta a uma página quer programaticamente, quer por um utilizador que seleciona o controlo fechado do catálogo de páginas quando a página está em modo de exibição de catálogo.
Fechar um WebPart controlo é diferente de o apagar. Um controlo fechado pode ser adicionado novamente a uma página, enquanto um controlo eliminado é removido permanentemente. Para mais informações sobre como eliminar controlos, consulte o DeleteWebPart método. Fechar um controlo também é diferente de o esconder. Um controlo que está oculto continua presente na página, continua a participar nos eventos do ciclo de vida da página e só está oculto da vista do utilizador, mas um controlo fechado nem sequer é renderizado numa página.
Tanto os controlos estáticos como os dinâmicos WebPart (os controlos estáticos são declarados na marcação de uma página, enquanto os controlos dinâmicos são adicionados programaticamente) podem ser fechados.
Se um promotor definir a AllowClose propriedade para false, um verbo próximo não aparece no controlo, e o utilizador não consegue fechar o controlo.
Esta propriedade não pode ser definida por temas ou temas de folhas de estilo. Para mais informações, consulte ThemeableAttribute e ASP.NET Temas e Skins.
O âmbito de personalização desta propriedade é definido e Shared só pode ser modificado por utilizadores autorizados. Para mais informações, consulte PersonalizableAttribute a Visão Geral da Personalização de Web Parts.