Exportar (0) Imprimir
Expandir todo

Part (Clase)

Actúa como la clase base para todos los controles de elementos Web, que representan una interfaz de usuario modular en una página de formularios Web Forms.

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

public abstract class Part : Panel, INamingContainer, ICompositeControlDesignerAccessor
public abstract class Part extends Panel implements INamingContainer, ICompositeControlDesignerAccessor
public abstract class Part extends Panel implements INamingContainer, ICompositeControlDesignerAccessor
No aplicable.

La clase Part define propiedades que son comunes a todos los controles de elementos y les permiten tener un aspecto modular y coherente en una página Web. Estas propiedades comunes incluyen un título, una descripción y características del cromo o marco que rodea un control de elementos.

La propiedad Title especifica un título para el control de elementos. La propiedad Description se utiliza para resumir el propósito del control de elementos y aparece como una información sobre herramientas en la barra de título del control. La propiedad ChromeType dicta qué tipo de borde se representa alrededor de un control de elementos, mientras la propiedad ChromeState indica si un control de elementos se representa normalmente o minimizado. El borde de un control de elementos se ve afectado por las propiedades de la zona que lo contiene; por ejemplo, la propiedad PartChromeType afecta a los marcos de todos los controles de elementos contenidos en una zona.

Un tipo de control de elementos es el control WebPart, que representa el contenido dentro de una zona correspondiente. Otro tipo es el control EditorPart, que proporciona controles de interfaz de usuario (UI) que se utilizan para modificar (personalizar) los controles WebPart individuales. Un tercer tipo de control de elementos es el control CatalogPart, que proporciona una lista de controles WebPart que los usuarios pueden agregar a o quitar de una página Web.

Los controles de elementos están contenidos en zonas, todas las cuales derivan de la clase abstracta WebZone. Una zona es responsable de organizar los controles de elementos que contiene. Cada zona también representa los elementos de interfaz de usuario para sí misma, incluidos un encabezado, un pie de página, una barra de título y los elementos de interfaz de usuario alrededor de cada control de elementos contenido, tales como los bordes.

NotaNota:

Aunque los controles de elementos residen normalmente en zonas, es posible de colocar un control de elementos fuera de una zona, si se hace referencia al control mediante declaración en el marcado de una página Web. Si un control de elementos se declara fuera de una zona en una página Web, el control todavía funciona, pero pierde la mayoría de su funcionalidad de elementos Web. Por ejemplo, el control no puede editarse y no puede arrastrarse a una zona en tiempo de ejecución. También es útil recordar que ningún control de elementos puede arrastrarse desde una zona y colocarse en una página fuera de una zona en tiempo de ejecución.

En la tabla siguiente se muestran algunos ejemplos de tipos de elementos base y sus tipos de zona correspondientes.

Tipo de control de elementos

Tipo de zona

WebPart

WebPartZone

EditorPart

EditorZone

CatalogPart

CatalogZone

Los distintos tipos de controles de elementos que derivan de la clase Part controlan las propiedades heredadas, orientadas a interfaz de usuario, de manera diferente. Los controles WebPart reemplazan algunas de las propiedades de interfaz de usuario heredadas y los marcan con el atributo Personalizable, (para obtener información detallada, consulte la documentación de la clase PersonalizableAttribute ), que permite para guardar los valores de esas propiedades para las sesiones del explorador futuras, una característica conocida como personalización. Por ejemplo, si permite mediante programación que un usuario actualice el valor de la propiedad Title de un control WebPart en tiempo de ejecución, el valor se personalizará (suponiendo que esté habilitada la personalización, que es la opción predeterminada). Varias propiedades de interfaz de usuario que los controles WebPart heredan de la clase Part y de la clase WebControl se controlan la misma manera.

Sin embargo, otros controles de elementos, como EditorPart y CatalogPart, no permiten personalizar las propiedades de interfaz de usuario. Por esta razón, los valores de propiedad asignados mediante programación no se guardan para las futuras sesiones del explorador. Por ejemplo, si permite mediante programación que un usuario actualice la propiedad Title de un control PropertyGridEditorPart en tiempo de ejecución, el valor actualizado se perderá cuando se cierre el control o finalice la sesión del explorador.

Una manera fácil de guardar los valores en tales propiedades de interfaz de usuario heredadas para los controles EditorPart y CatalogPart para futuras sesiones del explorador es declarar los valores de propiedad en formato de persistencia de página. Sin embargo, éste es un enfoque estático y continúa sin permitir que los usuarios personalicen los valores de las propiedades. Como alternativa, si desea permitir las actualizaciones mediante programación de propiedades de interfaz de usuario heredadas, de modo que los usuarios puedan personalizarlas en tiempo de ejecución, puede utilizar las variables, estáticas para guardar los valores de propiedad. Cada vez que se crea una nueva instancia de un control EditorPart o CatalogPart (por ejemplo, en el método que controla el evento Init del control), es posible reasignar el valor de una variable estática a una propiedad correspondiente. Tal enfoque permite que los usuarios personalicen la interfaz de usuario de edición y de catálogo de una aplicación de elementos Web.

Notas para los herederos: Normalmente, no se debe heredar directamente de la clase Part para desarrollar controles de elementos Web personalizados. Para ofrecer funcionalidad completa de elementos Web, el conjunto de controles de elementos Web necesita las clases derivadas de la clase Part, en concreto WebPart, EditorPart y CatalogPart, por lo que se debe derivar de ellas para desarrollar controles personalizados. Sin embargo, todavía es importante comprender el comportamiento de la clase Part base, porque proporciona un conjunto común de propiedades utilizado por todas las demás clases de elementos.

Los ejemplos de código siguientes muestran el uso declarativo de varias propiedades de la clase Part, utilizando dos instancias de un control WebPart personalizado a las que se hace referencia en una página Web ASP.NET. Para ejecutar el ejemplo de código debe compilar este código fuente. Puede compilarlo explícitamente y colocar el ensamblado resultante en la carpeta Bin de su sitio Web o en la caché de ensamblados global. Como alternativa, puede colocar el código fuente en la carpeta App_Code de su sitio, donde se compilará dinámicamente en tiempo de ejecución. Para un tutorial que muestra ambos métodos de compilación, vea Tutorial: Desarrollar y utilizar un control de servidor personalizado.

La primera parte del ejemplo contiene el código del control personalizado, denominado TextDisplayWebPart. Dado que el control deriva de WebPart, también hereda las propiedades comunes que proporciona la clase Part e ilustra el uso de esas propiedades en este ejemplo de código.

using System;
using System.Security.Permissions;
using System.Web;
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;
    const string _subTitle = "Contoso, Ltd";

    public TextDisplayWebPart()
    {
      this.AllowClose = false;
    }

    [
      Personalizable(PersonalizationScope.User, true),
      WebBrowsable()
    ]
    public String ContentText
    {
      get { return _contentText; }
      set { _contentText = value; }
    }

    protected override void CreateChildControls()
    {
      Controls.Clear();
      DisplayContent = new Label();
      DisplayContent.BackColor = 
        System.Drawing.Color.LightBlue;
      DisplayContent.Text = this.ContentText;
      this.Controls.Add(DisplayContent);
      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);
      ChildControlsCreated = true;
    }

    private void submit_Click(object sender, EventArgs e)
    {
      // Update the label string.
      if (input.Text != String.Empty)
      {
        this.ContentText = Page.Server.HtmlEncode(input.Text) + @"<br />";
        // Clear the input textbox.
        input.Text = String.Empty;
        DisplayContent.Text = this.ContentText;
      }
    }
  }
}

package Samples.AspNet.JSL.Controls;

import System.*;
import System.Security.Permissions.*;
import System.Web.*;
import System.Web.UI.WebControls.*;
import System.Web.UI.WebControls.WebParts.*;

/** @attribute AspNetHostingPermission(SecurityAction.Demand, Level =
    AspNetHostingPermissionLevel.Minimal)
 */
/** @attribute AspNetHostingPermission(SecurityAction.InheritanceDemand, Level =
    AspNetHostingPermissionLevel.Minimal)
 */
public class TextDisplayWebPart extends WebPart
{
    private String _contentText = null;
    private TextBox input;
    private Label displayContent;
    private String _subTitle = "Contoso, Ltd";

    public TextDisplayWebPart()
    {
        this.set_AllowClose(false);
    } //TextDisplayWebPart

    /** @attribute Personalizable(PersonalizationScope.User, true)
        @attribute WebBrowsable()
     */
    /** @property 
     */
    public String get_ContentText()
    {
        return _contentText;
    } //get_ContentText

    /** @property 
     */
    public void set_ContentText(String value)
    {
        _contentText = value;
    } //set_ContentText

    protected void CreateChildControls()
    {
        get_Controls().Clear();
        displayContent = new Label();
        displayContent.set_BackColor(System.Drawing.Color.get_LightBlue());
        displayContent.set_Text(this.get_ContentText());
        this.get_Controls().Add(displayContent);
        input = new TextBox();
        this.get_Controls().Add(input);
        Button update = new Button();
        update.set_Text("Set Label Content");
        update.add_Click(new EventHandler(this.Submit_Click));
        this.get_Controls().Add(update);
        set_ChildControlsCreated(true);
    } //CreateChildControls

    private void Submit_Click(Object sender, EventArgs e)
    {
        // Update the label string.
        if (!(input.get_Text().Equals(""))) {
            this.set_ContentText(
                this.get_Page().get_Server().HtmlEncode(input.get_Text()) 
                + "<br />");
            // Clear the input textbox.
            input.set_Text("");
            displayContent.set_Text(this.get_ContentText());
        }
    } //Submit_Click
} //TextDisplayWebPart

La segunda parte del ejemplo muestra cómo hacer referencia a los controles de elementos personalizados en una página Web ASP.NET. Observe que las distintas propiedades Part se asignan mediante declaración a las instancias de control personalizadas. Compare el código declarativo que hace referencia a las dos instancias de la página y, a continuación, cargue la página en un explorador. Tenga en cuenta cómo las distintas propiedades afectan el aspecto de los controles. Por ejemplo, una vez que se carga la página en un explorador, la segunda instancia del control TextDisplayWebPart aparece minimizada, porque el valor de su propiedad ChromeState se establece en Minimized.

<%@ page language="C#" %>
<%@ register tagprefix="aspSample" 
             Namespace="Samples.AspNet.CS.Controls" 
             Assembly="TextDisplayWebPartCS" %>

<!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 id="Head1" runat="server">
    <title>ASP.NET Example</title>
</head>
<body>
  <form id="Form1" runat="server">
    <asp:webpartmanager id="WebPartManager1" runat="server" />
    <asp:webpartzone
      id="WebPartZone1"
      runat="server"
      backcolor="#99cccc">
        <parttitlestyle font-bold="true" forecolor="#ffffff" />
        <partstyle
          borderwidth="1px" 
          borderstyle="Solid" 
          bordercolor="#81AAF2" />
        <zonetemplate>
          <aspSample:TextDisplayWebPart 
            runat="server"   
            id="textwebpart" 
            title = "Text Content WebPart" 
            Description="A text content WebPart control."
            ChromeType="TitleAndBorder"
            width="350px" />
        </zonetemplate>
    </asp:webpartzone>
    <asp:webpartzone
      id="WebPartZone2"
      runat="server"
      backcolor="#99cccc">
        <parttitlestyle font-bold="true" forecolor="#ffffff" />
        <partstyle
          borderwidth="1px" 
          borderstyle="Solid" 
          bordercolor="#81AAF2" />
        <zonetemplate>
          <aspSample:TextDisplayWebPart 
            runat="server"   
            id="textwebpart2" 
            title = "Text Content WebPart 2" 
            Description="A text content WebPart control."
            ChromeType="TitleOnly"
            ChromeState="Minimized"
            width="350px" />
        </zonetemplate>
    </asp:webpartzone>
  </form>
</body>
</html>

<%@ page language="VJ#" %>
<%@ register tagprefix="aspSample" 
             Namespace="Samples.AspNet.JSL.Controls" 
             Assembly="TextDisplayWebPartJSL" %>

<!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 id="Head1" runat="server">
    <title>ASP.NET Example</title>
</head>
<body>
  <form id="Form1" runat="server">
    <asp:webpartmanager id="WebPartManager1" runat="server" />
    <asp:webpartzone
      id="WebPartZone1"
      runat="server"
      backcolor="#99cccc">
        <parttitlestyle font-bold="true" forecolor="#ffffff" />
        <partstyle
          borderwidth="1px" 
          borderstyle="Solid" 
          bordercolor="#81AAF2" />
        <zonetemplate>
          <aspSample:TextDisplayWebPart 
            runat="server"   
            id="textwebpart" 
            title = "Text Content WebPart" 
            Description="A text content WebPart control."
            ChromeType="TitleAndBorder"
            width="350px" />
        </zonetemplate>
    </asp:webpartzone>
    <asp:webpartzone
      id="WebPartZone2"
      runat="server"
      backcolor="#99cccc">
        <parttitlestyle font-bold="true" forecolor="#ffffff" />
        <partstyle
          borderwidth="1px" 
          borderstyle="Solid" 
          bordercolor="#81AAF2" />
        <zonetemplate>
          <aspSample:TextDisplayWebPart 
            runat="server"   
            id="textwebpart2" 
            title = "Text Content WebPart 2" 
            Description="A text content WebPart control."
            ChromeType="TitleOnly"
            ChromeState="Minimized"
            width="350px" />
        </zonetemplate>
    </asp:webpartzone>
  </form>
</body>
</html>

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
Mostrar:
© 2014 Microsoft