Este tema aún no ha recibido ninguna valoración - Valorar este tema

WebPartZoneBase (Clase)

Sirve como clase base para todos los controles de zona que actúan como contenedores para controles WebPart (u otros controles de servidor o de usuario).

Espacio de nombres: System.Web.UI.WebControls.WebParts
Ensamblado: System.Web (en system.web.dll)

public abstract class WebPartZoneBase : WebZone, IPostBackEventHandler
public abstract class WebPartZoneBase extends WebZone implements IPostBackEventHandler
public abstract class WebPartZoneBase extends WebZone implements IPostBackEventHandler
No aplicable.

En el conjunto de controles de elementos Web, una zona es un control compuesto, representado como una tabla HTML, que contiene otros controles de una región definida de una página Web. La clase WebPartZoneBase es una zona que hereda de la clase base WebZone y proporciona un conjunto base de comportamientos para zonas derivadas que contienen controles WebPart, controles de servidor y controles de usuario. La combinación de zonas WebPartZoneBase con controles WebPart (y otros controles de servidor) forma la interfaz de usuario principal de una aplicación de elementos Web, la vista normal de una página con la que los usuarios interactúan la mayor parte del tiempo.

Todas las zonas proporcionan un conjunto común de elementos de interfaz de usuario para los controles que contienen. Para obtener una explicación detallada de los elementos de interfaz de usuario comunes a todas las zonas, consulte el tema de información general de la clase WebZone. La zona WebPartZoneBase incluye una sección de cuerpo que contiene los controles de servidor, y un objeto WebPartChrome asociado que se utiliza para representar los controles contenidos y sus elementos cromo, como sus verbos, bordes, etc.

Además de las características heredadas de la clase WebZone, la clase WebPartZoneBase agrega arrastre de controles del cliente, verbos específicos (para habilitar acciones frecuentes de la interfaz de usuario como minimizar, cerrar, eliminar y editar controles) y características de estilo adicionales. La clase WebPartZoneBase también es la clase de la que se hereda si desea diseñar una zona personalizada controlada por una base de datos. Por ejemplo, puede crear una zona personalizada de elementos Web de meteorología que hereda de WebPartZoneBase, y está diseñada para contener y proporcionar características de diseño y otros servicios para controles WebPart enlazados a datos que muestran información meteorológica.

La clase WebPartZoneBase contiene una serie de propiedades para trabajar con atributos de estilo en una zona. Hay varias propiedades para los bordes, incluyendo BorderStyle y BorderWidth. Hay un grupo de propiedades para trabajar con atributos de estilo de menús que pueden aparecer en el encabezado de una zona, como MenuLabelStyle, MenuVerbStyle y otras.

La clase WebPartZoneBase también contiene varios miembros para controlar los verbos de una zona. Estos miembros están relacionados con los verbos que aparecen en los controles de elementos de la zona. Si bien es posible agregar verbos de nivel de zona a zonas WebPartZoneBase, de manera predeterminada no tienen ninguno. Se proporciona un conjunto de verbos estándar con el conjunto de controles de elementos Web para su uso con controles de elementos y los desarrolladores pueden agregar también verbos personalizados. Algunas propiedades importantes para trabajar con verbos incluyen propiedades que hacen referencia a algunos de los objetos de verbo estándar, como CloseVerb, ConnectVerb, DeleteVerb y EditVerb, HelpVerb y MinimizeVerb. Los verbos estándar aparecen en un menú de verbos (normalmente se presenta en la interfaz de usuario como un menú desplegable) en la barra de título de cada control contenido en una zona. También hay una propiedad VerbButtonType que le permite determinar qué tipo de objeto en el que se puede hacer clic representa un verbo en la interfaz de usuario.

Otros miembros importantes para trabajar con verbos incluyen el método OnCreateVerbs, que es un controlador de eventos que se puede reemplazar para el control personalizado del proceso de creación de verbos, y el evento CreateVerbs.

La clase WebPartZoneBase contiene varios miembros para trabajar con controles WebPart contenidos dentro de una zona. La propiedad WebParts hace referencia a la colección de todos los controles WebPart (y otros controles de servidor) de la zona. Hay varios métodos que corresponden a los verbos o las acciones estándar que un usuario puede llevar a cabo en controles WebPart de una zona, como CloseWebPart, ConnectWebPart y EditWebPart.

Hay también varios miembros en la clase WebPartZoneBase relacionados con cómo se disponen u organizan los controles WebPart dentro de la zona. La propiedad AllowLayoutChange determina si se pueden desplazar controles entre las zonas o si los usuarios pueden reorganizarlos dentro de una zona. La propiedad LayoutOrientation le permite determinar si los controles de una zona están organizados horizontal o verticalmente.

NotaNota:

Internet Explorer puede representar el alto de WebPartZone o de los controles que contiene de una forma inesperada, dependiendo de la orientación de la zona. Para obtener más detalles, consulte la documentación sobre LayoutOrientation o las propiedades Height.

Otros métodos de la clase WebPartZoneBase proporcionan un control de programación detallado sobre la representación de las distintas áreas de una zona. Muchos de estos métodos reemplazan los métodos base heredados de la clase WebZone para personalizar la representación de las zonas que contienen controles WebPart. Entre los métodos importantes se incluyen Render, RenderBody, RenderDropCue y RenderHeader.

En el siguiente código de ejemplo se muestra el uso de la clase WebPartZoneBase. En el código se muestra cómo una clase derivada, WebPartZone, se utiliza mediante declaración en una página de elementos Web para contener controles WebPart. El ejemplo de código tiene cuatro secciones: las tres primeras secciones describen los archivos de código y la cuarta explica cómo ejecutar el código.

La primera parte del ejemplo de código es un control de usuario que permite a los usuarios cambiar la página en diferentes modos de presentación. Para obtener más información sobre los modos de presentación de los elementos Web y ver una descripción del código de este control, vea Tutorial: Cambiar los modos de presentación en una página de elementos Web.

<%@ control language="C#" classname="DisplayModeMenuCS"%>
<script runat="server">
  
 // Use a field to reference the current WebPartManager.
  WebPartManager _manager;

  void Page_Init(object sender, EventArgs e)
  {
    Page.InitComplete += new EventHandler(InitComplete);
  }  

  void InitComplete(object sender, System.EventArgs e)
  {
    _manager = WebPartManager.GetCurrentWebPartManager(Page);

    String browseModeName = WebPartManager.BrowseDisplayMode.Name;

    // Fill the dropdown with the names of supported display modes.
    foreach (WebPartDisplayMode mode in _manager.SupportedDisplayModes)
    {
      String modeName = mode.Name;
      // Make sure a mode is enabled before adding it.
      if (mode.IsEnabled(_manager))
      {
        ListItem item = new ListItem(modeName, modeName);
        DisplayModeDropdown.Items.Add(item);
      }
    }

    // If shared scope is allowed for this user, display the scope-switching
    // UI and select the appropriate radio button for the current user scope.
    if (_manager.Personalization.CanEnterSharedScope)
    {
      Panel2.Visible = true;
      if (_manager.Personalization.Scope == PersonalizationScope.User)
        RadioButton1.Checked = true;
      else
        RadioButton2.Checked = true;
    }
    
  }
 
  // Change the page to the selected display mode.
  void DisplayModeDropdown_SelectedIndexChanged(object sender, EventArgs e)
  {
    String selectedMode = DisplayModeDropdown.SelectedValue;

    WebPartDisplayMode mode = _manager.SupportedDisplayModes[selectedMode];
    if (mode != null)
      _manager.DisplayMode = mode;
  }

  // Set the selected item equal to the current display mode.
  void Page_PreRender(object sender, EventArgs e)
  {
    ListItemCollection items = DisplayModeDropdown.Items;
    int selectedIndex = 
      items.IndexOf(items.FindByText(_manager.DisplayMode.Name));
    DisplayModeDropdown.SelectedIndex = selectedIndex;
  }

  // Reset all of a user's personalization data for the page.
  protected void LinkButton1_Click(object sender, EventArgs e)
  {
    _manager.Personalization.ResetPersonalizationState();
  }

  // If not in User personalization scope, toggle into it.
  protected void RadioButton1_CheckedChanged(object sender, EventArgs e)
  {
    if (_manager.Personalization.Scope == PersonalizationScope.Shared)
      _manager.Personalization.ToggleScope();
  }

  // If not in Shared scope, and if user is allowed, toggle the scope.
  protected void RadioButton2_CheckedChanged(object sender, EventArgs e)
  {
    if (_manager.Personalization.CanEnterSharedScope && 
        _manager.Personalization.Scope == PersonalizationScope.User)
      _manager.Personalization.ToggleScope();
  }
</script>
<div>
  <asp:Panel ID="Panel1" runat="server" 
    Borderwidth="1" 
    Width="230" 
    BackColor="lightgray"
    Font-Names="Verdana, Arial, Sans Serif" >
    <asp:Label ID="Label1" runat="server" 
      Text="&nbsp;Display Mode" 
      Font-Bold="true"
      Font-Size="8"
      Width="120" 
      AssociatedControlID="DisplayModeDropdown"/>
    <asp:DropDownList ID="DisplayModeDropdown" runat="server"  
      AutoPostBack="true" 
      Width="120"
      OnSelectedIndexChanged="DisplayModeDropdown_SelectedIndexChanged" />
    <asp:LinkButton ID="LinkButton1" runat="server"
      Text="Reset User State" 
      ToolTip="Reset the current user's personalization data for the page."
      Font-Size="8" 
      OnClick="LinkButton1_Click" />
    <asp:Panel ID="Panel2" runat="server" 
      GroupingText="Personalization Scope"
      Font-Bold="true"
      Font-Size="8" 
      Visible="false" >
      <asp:RadioButton ID="RadioButton1" runat="server" 
        Text="User" 
        AutoPostBack="true"
        GroupName="Scope" OnCheckedChanged="RadioButton1_CheckedChanged" />
      <asp:RadioButton ID="RadioButton2" runat="server" 
        Text="Shared" 
        AutoPostBack="true"
        GroupName="Scope" 
        OnCheckedChanged="RadioButton2_CheckedChanged" />
    </asp:Panel>
  </asp:Panel>
</div>

La segunda parte del ejemplo de código es un archivo de código lateral que contiene el código para controlar los eventos de la página Web principal. El código de este archivo muestra cómo trabajar con algunos de los miembros clave de WebPartZoneBase mediante programación.

using System;
using System.Text;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;

public partial class WebPartZoneBase_overview : System.Web.UI.Page
{
  protected void Page_Load(Object sender, EventArgs e)
  {
    Label1.Text = DateTime.Now.ToLongDateString();
    Label2.Text = String.Empty;
  }

  protected void Button1_Click(object sender, EventArgs e)
  {
    if (WebPartZone2.VerbButtonType == ButtonType.Button)
      WebPartZone2.VerbButtonType = ButtonType.Link;
    else
      WebPartZone2.VerbButtonType = ButtonType.Button;
  }

  protected void Button2_Click(object sender, EventArgs e)
  {
    if (WebPartZone1.LayoutOrientation == Orientation.Vertical)
      WebPartZone1.LayoutOrientation = Orientation.Horizontal;
    else
      WebPartZone1.LayoutOrientation = Orientation.Vertical;
    Page_Load(sender, e);
  }

  protected void Button3_Click(object sender, EventArgs e)
  {
    StringBuilder builder = new StringBuilder();
    builder.AppendLine(@"<strong>WebPartZone1 WebPart IDs</strong><br />");
    foreach (WebPart part in WebPartZone1.WebParts)
    {
      builder.AppendLine("ID: " + part.ID 
                          + "; Type:  " + part.GetType() 
                          + @"<br />");
    }
    Label2.Text = builder.ToString();
    Label2.Visible = true;
  }

  protected void Button4_Click(object sender, EventArgs e)
  {
    StringBuilder builder = new StringBuilder();
    builder.AppendLine(@"<strong>WebPartZone1 DisplayTitle Property</strong><br />");
    builder.AppendLine(WebPartZone1.DisplayTitle + @"<br />");
    Label2.Text = builder.ToString();
    Label2.Visible = true;
  }
}

La tercera parte del ejemplo de código es la página Web que contiene los controles WebPartZone que presentan el comportamiento de la clase base WebPartZoneBase y los controles WebPart contenidos en las zonas.

<%@ Page Language="C#" 
  Codefile="webpartzonebase_overview.cs"
  Inherits="WebPartZoneBase_overview"  %>
<%@ register TagPrefix="uc1" 
  TagName="DisplayModeMenuCS" 
  Src="DisplayModeMenuCS.ascx" %>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
    "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" >
<head runat="server">
    <title>WebPartZoneBase Example</title>
</head>
<body>
    <form id="form1" runat="server">
    <div>
      <asp:WebPartManager ID="WebPartManager1" Runat="server" />
      <uc1:DisplayModeMenuCS ID="DisplayModeMenu1" runat="server" />
      <table width="75%">
        <tr>
          <td>
            <asp:WebPartZone 
              ID="WebPartZone1" 
              Runat="server"
              LayoutOrientation="Vertical" >
              <EditVerb Text="Edit WebPart" />
              <SelectedPartChromeStyle BackColor="LightBlue" />
              <ZoneTemplate>
                <asp:BulletedList 
                  ID="BulletedList1" 
                  Runat="server"
                  DisplayMode="HyperLink" 
                  Title="Favorite Links" >
                  <asp:ListItem Value="http://msdn.microsoft.com">
                    MSDN
                  </asp:ListItem>
                  <asp:ListItem Value="http://www.asp.net">
                    ASP.NET
                  </asp:ListItem>
                  <asp:ListItem Value="http://www.msn.com">
                    MSN
                  </asp:ListItem>
                </asp:BulletedList>
                <asp:Calendar ID="Calendar1" Runat="server" 
                  Title="My Calendar" />
              </ZoneTemplate>
            </asp:WebPartZone>
          </td>
          <td valign="top" align="right">
            <asp:WebPartZone 
              ID="WebPartZone2"
              Runat="server" 
              DragHighlightColor="#00ff00"
              AllowLayoutChange="true"
              EmptyZoneText="Add WebParts to this empty Zone."
              BorderWidth="2"
              BorderColor="DarkBlue"
              BorderStyle="Dashed" 
              MenuLabelText="Verbs Menu" 
              MenuPopupImageUrl="label.gif" >
              <VerbStyle Font-Italic="true" />
              <MenuLabelStyle BackColor="Lime" BorderWidth="1"  />
              <MenuLabelHoverStyle Font-Bold="true" />
              <MenuVerbHoverStyle BackColor="LightGrey" />
              <MenuVerbStyle Font-Italic="true" /> 
              <ZoneTemplate>
                <asp:Label ID="Label1" Runat="server" Title="Date" />
              </ZoneTemplate>
            </asp:WebPartZone>
          </td>
        </tr>
        <tr>
          <td>
            <asp:EditorZone ID="EditorZone1" Runat="server">
              <ZoneTemplate>
                <asp:AppearanceEditorPart ID="AppearanceEditorPart1" 
                  Runat="server" />
                <asp:LayoutEditorPart ID="LayoutEditorPart1" 
                  Runat="server" />
              </ZoneTemplate>
            </asp:EditorZone>      
          </td>
        </tr>
      </table>
    </div>
    <asp:Button ID="Button1" Runat="server" 
      Width="200" Text="Toggle WebPartZone2 Buttons" 
      OnClick="Button1_Click" />
    <br />
    <asp:Button ID="Button2" Runat="server" 
      Width="200"  Text="Toggle Layout Orientation" 
      OnClick="Button2_Click" />
    <br />
    <asp:Button ID="Button3" Runat="server" 
      Width="200" Text="List WebPartZone1 WebParts" 
      OnClick="Button3_Click" />
    <br />
    <asp:Button ID="Button4" Runat="server" 
      Width="200" Text="WebPartZone1 Display Title" 
      OnClick="Button4_Click" />
    <br />
    <asp:Label ID="Label2" Runat="server" Visible="false" />
    </form>
</body>
</html>

Cargue la página Web en un explorador. Utilice el control de lista desplegable Modo de presentación para cambiar la página al modo de diseño, haga clic en los controles WebPart y pruebe a arrastrarlos entre las zonas visibles. Haga clic en algunos de los botones de la página para ver el efecto de utilizar distintos miembros de la clase WebPartZoneBase. Después, cambie la página al modo de edición. Asegúrese de que haya un control WebPart en WebPartZone2, haga clic en el menú de verbos en la barra de título del control y, después, haga clic en Modificar para editar el control. Termine de modifique ese control y, a continuación, modifique uno de los controles de la otra zona. A medida que lleva a cabo estos pasos, observe las diferencias en los estilos de la interfaz de usuario de los controles y las zonas, que son el efecto de utilizar los distintos miembros de la clase WebPartZoneBase.

Los miembros estáticos públicos (Shared en Visual Basic) de este tipo son seguros para la ejecución de subprocesos. No se garantiza que los miembros de instancias sean seguros para la ejecución de subprocesos.

Windows 98, Windows 2000 Service Pack 4, Windows CE, Windows Millennium, Windows Mobile para Pocket PC, Windows Mobile para Smartphone, Windows Server 2003, Windows XP Media Center, Windows XP Professional x64, Windows XP SP2, Windows XP Starter

Microsoft .NET Framework 3.0 es compatible con Windows Vista, Microsoft Windows XP SP2 y Windows Server 2003 SP1.

.NET Framework

Compatible con: 3.0, 2.0
¿Te ha resultado útil?
(Caracteres restantes: 1500)

Adiciones de comunidad

AGREGAR
© 2013 Microsoft. Reservados todos los derechos.