Condividi tramite


WebPartManager.CloseWebPart(WebPart) Metodo

Definizione

Chiude un controllo WebPart in maniera tale che non ne viene eseguito il rendering in una pagina Web, ma che sia possibile riaprirlo.

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)

Parametri

webPart
WebPart

Controllo WebPart o controllo server chiuso in un'area WebPartZoneBase.

Eccezioni

webPart è null.

Il parametro webPart non è presente nell'insieme Controls.

-oppure-

webPart è un controllo condiviso ed è già stato chiuso da un altro utente.

Esempio

Nell'esempio di codice riportato di seguito viene illustrato come utilizzare il metodo CloseWebPart.

L'esempio di codice include quattro parti:

  • Controllo utente che consente di modificare le modalità di visualizzazione della pagina.

  • Controllo personalizzato WebPart .

  • Pagina Web.

  • Spiegazione del funzionamento dell'esempio in un browser.

La prima parte dell'esempio di codice è il controllo utente per modificare le modalità di visualizzazione. È possibile ottenere il codice sorgente per il controllo utente dalla sezione Esempio della panoramica della WebPartManager classe. Per altre informazioni sulle modalità di visualizzazione e sul funzionamento del controllo utente, vedere Procedura dettagliata: Modifica delle modalità di visualizzazione in una pagina web part.

La seconda parte dell'esempio di codice è il controllo personalizzato WebPart . Per eseguire l'esempio di codice, è necessario compilare questo codice sorgente. È possibile compilarlo in modo esplicito e inserire l'assembly risultante nella cartella Bin del sito Web o nella global assembly cache. In alternativa, è possibile inserire il codice sorgente nella cartella App_Code del sito, in cui verrà compilato dinamicamente in fase di esecuzione. In questo esempio viene usato l'approccio di compilazione dinamico; pertanto non Assembly esiste alcun attributo nella direttiva per questo controllo nella Register parte superiore della pagina Web. Per una procedura dettagliata che illustra come compilare, vedere Procedura dettagliata: Sviluppo e uso di un controllo server Web personalizzato.

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

La terza parte dell'esempio di codice è la pagina Web. La pagina contiene una zona, con un CatalogZone<asp:pagecatalogpart> elemento dichiarato all'interno. Questo è ciò che conterrà il controllo chiuso WebPart e consente agli utenti di aggiungerlo nuovamente alla pagina. Il Button1_Click metodo chiama direttamente il CloseWebPart metodo per chiudere il controllo personalizzato WebPart , anche se un utente può anche chiudere il controllo tramite il menu verbi.

<%@ 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>

Dopo aver caricato la pagina in un browser, chiudere il controllo personalizzato WebPart facendo clic sul menu verbi (simbolo freccia) nell'intestazione del controllo e facendo clic su Chiudi. Modificare ora la pagina in modalità catalogo selezionando Catalogo nel controllo elenco a discesa Modalità visualizzazione . Il catalogo di pagine viene visualizzato con il controllo chiuso. Selezionare la casella di controllo accanto al controllo chiuso, fare clic su Aggiungi per aggiungerlo alla pagina e quindi fare clic su Chiudi per restituire la modalità di esplorazione. Il controllo viene ripristinato nella pagina. Chiudi di nuovo, questa volta facendo clic sul pulsante Chiudi WebPart .

Commenti

Il CloseWebPart metodo rimuove un WebPart controllo server o altro in modo che non venga eseguito il rendering nella pagina Web che l'ha originariamente contenuta. Il controllo chiuso viene aggiunto a un PageCatalogPart oggetto, che mantiene un riferimento al controllo chiuso e consente al controllo di essere ripristinato nella pagina. Un controllo chiuso WebPart viene ancora visualizzato nell'insieme a cui fa riferimento la WebParts proprietà .

La chiusura di un controllo è diversa dall'eliminazione. I controlli chiusi sono ancora disponibili per essere ripristinati in una pagina, ma un'istanza di controllo eliminata viene rimossa definitivamente e non può mai essere ripristinata. Indipendentemente dal fatto che un WebPart controllo o server sia statico (dichiarato nel markup di una pagina) o dinamico (aggiunto alla pagina a livello di codice o da un utente di un catalogo web part), può essere chiuso e riaperto in una pagina.

In genere, gli utenti possono chiudere un WebPart controllo facendo clic sul menu verbi e selezionando il verbo di chiusura. Un controllo può anche essere chiuso chiamando direttamente il CloseWebPart metodo e passandolo un riferimento a webPart.

In una pagina in cui WebPart i controlli sono stati chiusi, se uno sviluppatore dichiara un <asp:catalogzone> elemento e all'interno aggiunge un <asp:pagecatalogpart> elemento, fornisce un'interfaccia utente semplice per gli utenti per ripristinare i controlli chiusi nella pagina in fase di esecuzione. Gli utenti possono cambiare la pagina in modalità di visualizzazione del catalogo e i controlli chiusi verranno visualizzati all'interno del catalogo di pagine. Gli utenti possono selezionare controlli chiusi e aggiungerli alla pagina in qualsiasi posizione desiderata e quindi i controlli selezionati vengono ripristinati nella pagina e visualizzati come normale.

Quando viene chiamato il CloseWebPart metodo, genera diversi eventi: WebPartClosing, ( SelectedWebPartChanging se sono presenti più controlli) e WebPartsDisconnecting (se sono presenti controlli connessi). In genere gli sviluppatori possono annullare questi eventi, ma in alcuni casi non è possibile annullarli. Per informazioni dettagliate, vedere la documentazione per gli WebPartClosingeventi , SelectedWebPartChanginge WebPartsDisconnecting .

Si applica a

Vedi anche