WebPartManager.CloseWebPart(WebPart) Метод
Определение
Важно!
Некоторые сведения относятся к предварительной версии продукта, в которую до выпуска могут быть внесены существенные изменения. Майкрософт не предоставляет никаких гарантий, явных или подразумеваемых, относительно приведенных здесь сведений.
Закройте элемент управления WebPart таким образом, чтобы он больше не отображался на веб-странице, но мог быть повторно открыт.
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)
Параметры
- webPart
- WebPart
WebPart или серверный элемент управления, который закрывается в WebPartZoneBase.
Исключения
webPart
имеет значение null
.
Элемент webPart
отсутствует в коллекции Controls.
-или-
webPart
является общим элементом управления и уже был закрыт другим пользователем.
Примеры
В следующем примере кода показано, как использовать метод CloseWebPart.
Пример кода состоит из четырех частей:
Пользовательский элемент управления, позволяющий изменять режимы отображения страницы.
Пользовательский WebPart элемент управления.
Веб-страница.
Описание работы примера в браузере.
Первая часть примера кода — это пользовательский элемент управления для изменения режимов отображения. Исходный код для пользовательского элемента управления можно получить в разделе Пример в обзоре WebPartManager класса. Дополнительные сведения о режимах отображения и принципе работы пользовательского элемента управления см. в разделе Пошаговое руководство. Изменение режимов отображения на странице веб-частей.
Вторая часть примера кода — это пользовательский WebPart элемент управления. Для выполнения примера кода необходимо скомпилировать этот исходный код. Ее можно скомпилировать явным образом и поместить полученную сборку в папку Bin веб-сайта или глобальный кэш сборок. Кроме того, исходный код можно поместить в папку App_Code сайта, где он будет динамически компилироваться во время выполнения. В этом примере используется подход динамической компиляции; Таким образом, в директиве Register
для этого элемента управления в верхней части веб-страницы отсутствует Assembly
атрибут . Пошаговое руководство, демонстрирующее компиляцию, см. в разделе Пошаговое руководство. Разработка и использование пользовательского серверного веб-элемента управления.
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
Третья часть примера кода — веб-страница. Страница содержит CatalogZone зону с элементом, объявленным в ней <asp:pagecatalogpart>
. Это то, что будет содержать закрытый WebPart элемент управления и позволит пользователям добавлять его обратно на страницу. Метод Button1_Click
напрямую вызывает CloseWebPart метод , чтобы закрыть пользовательский WebPart элемент управления, хотя пользователь также может закрыть элемент управления с помощью меню команд.
<%@ 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>
Загрузив страницу в браузере, закройте пользовательский WebPart элемент управления, щелкнув меню команд (символ стрелки) в заголовке элемента управления и нажав кнопку Закрыть. Теперь переведите страницу в режим каталога, выбрав Каталог в раскрывающемся списке Режим отображения . Откроется каталог страниц с закрытым элементом управления . Установите флажок рядом с закрытым элементом управления, нажмите кнопку Добавить , чтобы добавить его на страницу, а затем нажмите кнопку Закрыть , чтобы вернуть страницу в режим просмотра. Элемент управления восстанавливается на странице. Теперь закройте его снова, на этот раз нажав кнопку Закрыть веб-часть .
Комментарии
Метод CloseWebPart удаляет или другой серверный WebPart элемент управления, чтобы он не отображался на веб-странице, на которую он изначально содержался. Закрытый PageCatalogPart элемент управления добавляется в объект , который сохраняет ссылку на закрытый элемент управления и позволяет восстановить элемент управления на странице. Закрытый WebPart элемент управления по-прежнему отображается в коллекции, на которую ссылается WebParts свойство .
Закрытие элемента управления отличается от удаления. Закрытые элементы управления по-прежнему доступны для восстановления на странице, но удаленный экземпляр элемента управления удаляется без возможности восстановления. Независимо от того, является ли серверный элемент управления или статическим WebPart (объявлен в разметке страницы) или динамическим (добавляется на страницу программными средствами или пользователем из каталога веб-частей), его можно закрыть и повторно открыть на странице.
Как правило, пользователи могут закрыть WebPart элемент управления, щелкнув его меню глаголы и выбрав команду закрытия. Элемент управления также можно закрыть, напрямую вызвав CloseWebPart метод и передав ему ссылку в webPart
.
Если на странице, на которой WebPart были закрыты элементы управления, разработчик объявляет <asp:catalogzone>
элемент и добавляет <asp:pagecatalogpart>
элемент, он предоставляет пользователям простой пользовательский интерфейс для восстановления закрытых элементов управления на странице во время выполнения. Пользователи могут переключить страницу в режим отображения каталога, и закрытые элементы управления будут отображаться в каталоге страниц. Пользователи могут выбирать закрытые элементы управления и добавлять их обратно на страницу в любом месте, после чего выбранные элементы управления восстанавливаются на странице и отображаются в обычном режиме.
При вызове CloseWebPart метода возникает несколько событий: WebPartClosing, SelectedWebPartChanging (при наличии нескольких элементов управления) и WebPartsDisconnecting (если есть подключенные элементы управления). Обычно разработчики могут отменить эти события, но в некоторых случаях отменить их невозможно. Дополнительные сведения см. в документации по событиям WebPartClosing, SelectedWebPartChangingи WebPartsDisconnecting .