WebPart.AllowClose Propriedade

Definição

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.

Aplica-se a

Ver também