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 сайта, где он будет динамически скомпилирован во время выполнения. В этом примере используется подход динамической компиляции; Assembly Таким образом, в директиве этого элемента управления нет атрибута Register в верхней части веб-страницы. Пошаговое руководство по компиляции см. в руководстве по разработке и использованию пользовательского веб-сервера.
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 При вызове метода вызывается несколько событий: WebPartClosingSelectedWebPartChanging (если есть несколько элементов управления) и WebPartsDisconnecting (если есть подключенные элементы управления). Как правило, разработчики могут отменить эти события, но в некоторых случаях их невозможно отменить. Дополнительные сведения см. в документации по событиям и WebPartsDisconnecting событиямWebPartClosingSelectedWebPartChanging.