Поделиться через


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 .

Применяется к

См. также раздел