WebPartManager.CloseWebPart(WebPart) Metodo
Definizione
Importante
Alcune informazioni sono relative alla release non definitiva del prodotto, che potrebbe subire modifiche significative prima della release definitiva. Microsoft non riconosce alcuna garanzia, espressa o implicita, in merito alle informazioni qui fornite.
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 .