Cette documentation est archivée et n’est pas conservée.

PropertyGridEditorPart, classe

Remarque : cette classe est nouvelle dans le .NET Framework version 2.0.

Fournit un contrôle d'édition qui permet à l'utilisateur final de modifier des propriétés personnalisées sur un contrôle WebPart ou un contrôle serveur associé. Cette classe ne peut pas être héritée.

Espace de noms : System.Web.UI.WebControls.WebParts
Assembly : System.Web (dans system.web.dll)

public sealed class PropertyGridEditorPart : EditorPart
public final class PropertyGridEditorPart extends EditorPart
public final class PropertyGridEditorPart extends EditorPart

Le PropertyGridEditorPart fournit une interface utilisateur générique qui permet aux utilisateurs de modifier des propriétés personnalisées sur des contrôles WebPart et serveur placés dans des zones WebPartZoneBase. À l'inverse, les autres contrôles EditorPart, notamment les contrôles AppearanceEditorPart et BehaviorEditorPart, modifient uniquement des propriétés existantes orientées interface utilisateur, issues de la classe WebPart.

Au même titre que les zones orientées outil présentes dans le jeu de contrôles WebPart (pour plus d'informations, consultez la vue d'ensemble de la classe ToolZone), il existe des contrôles Part orientés outil, et chacun d'eux doit figurer dans un type correspondant de zone outil. Les contrôles de ce type, présents dans le jeu de contrôles WebPart, affichent deux caractéristiques propres :

  • Ce sont des contrôles d'assistance qui permettent à l'utilisateur final de personnaliser les contrôles qui constituent l'interface utilisateur principale d'une page dans une application WebPart.

  • Ils sont visibles uniquement dans certains modes d'affichage de la page.

Le contrôle PropertyGridEditorPart est un contrôle spécial. Il devient visible uniquement lorsqu'une page Web est en mode édition, et lorsqu'un contrôle WebPart ou un contrôle serveur spécifique a été sélectionné par un utilisateur à des fins d'édition. Le contrôle PropertyGridEditorPart, comme tous les autres contrôles EditorPart, doit être placé dans une zone EditorZone sur la page.

RemarqueImportant :

Une zone EditorZone peut contenir uniquement des contrôles EditorPart. Aucun contrôle EditorPart ne peut être placé dans un autre type de zone.

Le contrôle PropertyGridEditorPart fournit une interface utilisateur de modification destinée aux propriétés qui sont marquées dans le code source de l'attribut WebBrowsable (issues de la classe WebBrowsableAttribute). Lorsqu'une propriété est marquée de cet attribut, un contrôle PropertyGridEditorPart crée l'interface utilisateur de modification fondée sur le type de la propriété, puis si nécessaire, utilise un objet PropertyDescriptor pour mettre la valeur présente dans chaque contrôle d'édition au format du type de la propriété. Vous pouvez également ajouter d'autres attributs qui aident le contrôle PropertyGridEditorPart à afficher l'interface utilisateur de modification. L'attribut WebDisplayName (issu de la classe WebDisplayNameAttribute) vous permet de spécifier le texte de l'étiquette qui s'affiche avec chaque contrôle présent dans l'interface utilisateur de modification. L'attribut WebDescription (issu de la classe WebDescriptionAttribute) permet de spécifier une chaîne qui s'affiche sous forme d'info-bulle pour chaque contrôle présent dans l'interface utilisateur de modification.

Les contrôles créés pour modifier des propriétés de différents types sont répertoriés dans le tableau suivant.

Type de propriété

Contrôle créé pour modifier la propriété

Chaîne

TextBox

Int, Float, Unit

TextBox

Booléen

CheckBox

Enum

DropDownList (contient la liste de valeurs énumérées)

DateTime

TextBox

La classe PropertyGridEditorPart dispose d'une propriété Title utilisée pour obtenir ou définir le texte de titre visible destiné au contrôle. Par ailleurs, une propriété Display protégée détermine si le contrôle s'affiche ou non lorsque la page entre en mode édition.

La classe PropertyGridEditorPart dispose également de deux méthodes importantes, ApplyChanges et SyncChanges, dont elle hérite de la classe EditorPart et qu'elle substitue. Les méthodes sont critiques car elles permettent d'obtenir et de définir les valeurs de propriété entre les valeurs de champ du contrôle d'édition et les propriétés du contrôle WebPart en cours d'édition.

Sachant que le contrôle PropertyGridEditorPart permet de modifier uniquement des propriétés personnalisées, vous avez besoin des autres contrôles EditorPart présents dans le jeu de contrôles WebPart pour modifier l'aspect, la disposition et le comportement des contrôles WebPart. Les autres contrôles sont notamment BehaviorEditorPart, LayoutEditorPart et AppearanceEditorPart. Ces contrôles EditorPart doivent fournir la plupart des fonctionnalités d'édition requises pour modifier les contrôles WebPart. Toutefois, si nécessaire, vous pouvez aussi créer un contrôle d'édition personnalisé en héritant de la classe EditorPart. Pour obtenir un exemple de code, consultez la rubrique de vue d'ensemble de la classe EditorPart.

RemarqueRemarque

Pour améliorer l'accessibilité, le contrôle PropertyGridEditorPart est rendu dans un élément <fieldset>. L'élément <fieldset> groupe le jeu de contrôles associé utilisé à des fins d'édition dans le contrôle PropertyGridEditorPart, et facilite la navigation par onglets au sein de ces contrôles, tant pour les agents utilisateur (user agents) visuels (tel que les navigateurs Web ordinaires) que pour les agents utilisateur à capacité vocale (tels que les logiciels de lecture d'écran).

Accessibilité

Le balisage rendu par défaut pour ce contrôle peut ne pas se conformer aux normes d'accessibilité telles que les instructions de priorité 1 d'accessibilité du contenu Web (WCAG, Web Content Accessibility Guidelines). Pour plus d'informations sur la prise en charge d'accessibilité pour ce contrôle, consultez Contrôles et accessibilité ASP.NET.

RubriqueEmplacement
Comment : définir le mode d'affichage d'une page WebPartGénération d'applications Web ASP.NET dans Visual Studio
Comment : définir le mode d'affichage d'une page WebPartGénération d'applications Web ASP.NET dans Visual Studio
Comment : définir le mode d'affichage d'une page WebPartGénération d'applications Web ASP.NET

L'exemple de code suivant montre comment déclarer un contrôle PropertyGridEditorPart sur une page Web et l'activer pour modifier plusieurs propriétés d'interface utilisateur d'un contrôle WebPart. L'exemple de code se compose de quatre parties :

  • Contrôle utilisateur qui vous permet de modifier les modes d'affichage d'une page WebPart.

  • Page Web qui contient un contrôle EditorZone et un contrôle PropertyGridEditorPart, ainsi qu'une référence à un contrôle WebPart personnalisé.

  • Classe qui contient le contrôle WebPart personnalisé.

  • Explication sur le fonctionnement de l'exemple lorsque vous chargez la page dans un navigateur.

Le code source du contrôle utilisateur provient d'une autre rubrique. Pour que cet exemple de code fonctionne, vous devez chercher le fichier .ascx du contrôle utilisateur dans la rubrique Procédure pas à pas : modification des modes d'affichage sur une page WebPart et placer ce fichier dans le même dossier que la page .aspx de cet exemple.

La seconde partie de l'exemple de code est la page Web. Il contient une référence déclarative à un contrôle EditorZone, ainsi qu'un élément <zonetemplate> enfant qui contient, lui-même, une référence déclarative à un contrôle PropertyGridEditorPart. La page référence le contrôle WebPart personnalisé, au moyen d'une directive Register pour l'assembly, et de l'élément <aspSample:UserInfoWebPart> pour le contrôle.

<%@ page language="c#" %>
<%@ register TagPrefix="uc1" 
  TagName="DisplayModeMenuCS" 
  Src="DisplayModeMenuCS.ascx" %>
<%@ register tagprefix="aspSample" 
  Namespace="Samples.AspNet.CS.Controls" 
  Assembly="UserInfoWebPartCS" %>
<script runat="server">
  
  protected void Page_Load(object sender, EventArgs e)
  {
    Button1.Visible = false;
    TextBox1.Visible = false;
  }

  private static String editControlTitle;
  
  protected void Button1_Click(object sender, EventArgs e)
  {
    editControlTitle = Server.HtmlEncode(TextBox1.Text);
    PropertyGridEditorPart1.Title = editControlTitle;
  }

  protected void PropertyGridEditorPart1_Init(object sender, EventArgs e)
  {
    if (editControlTitle != null)
      PropertyGridEditorPart1.Title = editControlTitle;
  }  

  protected void PropertyGridEditorPart1_PreRender(object sender,
    EventArgs e)
  {
    Button1.Visible = true;
    TextBox1.Visible = true;
  }

</script>
<html>
  <head runat="server">
    <title>
      User Information WebPart with EditorPart
    </title>
  </head>
  <body>
    <form id="form1" runat="server">
      <asp:webpartmanager id="WebPartManager1" runat="server"  />
      <uc1:DisplayModeMenuCS ID="DisplayModeMenu1" runat="server" />
      <asp:webpartzone id="zone1" runat="server" >
        <PartTitleStyle BorderWidth=1 
          Font-Names="Verdana, Arial"
          Font-Size="110%"
          BackColor="LightBlue" />
        <zonetemplate>
          <aspSample:UserInfoWebPart 
            runat="server"   
            id="userinfo" 
            title = "User Information WebPart"
            BackColor="Beige" />          
        </zonetemplate>
      </asp:webpartzone> 
      <div>
      <hr />
      <asp:Button ID="Button1" runat="server" 
        Text="Update EditorPart Title" 
        OnClick="Button1_Click" />
      <asp:TextBox ID="TextBox1" runat="server"></asp:TextBox>
      </div>
      <asp:EditorZone ID="EditorZone1" runat="server">
        <ZoneTemplate>
          <asp:PropertyGridEditorPart ID="PropertyGridEditorPart1" 
            runat="server" 
            Title="Edit Custom Properties"
            OnPreRender="PropertyGridEditorPart1_PreRender" 
            OnInit="PropertyGridEditorPart1_Init" />   
        </ZoneTemplate>
      </asp:EditorZone>
    </form>
  </body>
</html>

La troisième partie de l'exemple de code consiste en une classe WebPart personnalisée nommée UserInfoWebPart, et référencée dans la page Web. Remarquez que les différentes propriétés qui contiennent des informations sur un utilisateur sont toutes marquées de l'attribut WebBrowsable. Le contrôle PropertyGridEditorPart peut ainsi fournir l'interface utilisateur requise pour modifier ces propriétés. Les propriétés sont également marquées d'un attribut WebDisplayName afin de spécifier le texte de l'étiquette qui figure à côté de chaque contrôle dans l'interface utilisateur de modification.

Pour exécuter l'exemple de code, vous devez compiler ce code source. Vous pouvez le compiler explicitement et mettre l'assembly résultant dans le dossier Bin de votre site Web ou dans le Global Assembly Cache. Vous pouvez également mettre le code source dans le dossier App_Code de votre site où il sera compilé dynamiquement au moment de l'exécution. Pour obtenir une procédure pas à pas qui illustre le processus de compilation, consultez Procédure pas à pas : développement et utilisation d'un contrôle serveur personnalisé.

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 UserInfoWebPart : WebPart
  {
    HttpServerUtility server = HttpContext.Current.Server;
    private String _userNickName = "Add a nickname.";
    private String _userPetName = "Add a pet name.";
    private DateTime _userSpecialDate = DateTime.Now;
    private Boolean _userIsCurrent = true;
    private JobTypeName _userJobType = JobTypeName.Unselected;
    public enum JobTypeName
    {
      Unselected = 0,
      Support = 1,
      Service = 2,
      Professional = 3, 
      Technical = 4,
      Manager = 5,
      Executive = 6
    }
    Label NickNameLabel;
    Label PetNickNameLabel;
    Label SpecialDateLabel;
    CheckBox IsCurrentCheckBox;
    Label JobTypeLabel;

    // Add the Personalizable and WebBrowsable attributes to the  
    // public properties, so that users can save property values  
    // and edit them with a PropertyGridEditorPart control.
    [Personalizable(), WebBrowsable, WebDisplayName("Nickname")]
    public String NickName
    {
      get 
      { 
        object o = ViewState["NickName"];
        if (o != null)
          return (string)o;
        else
          return _userNickName;        
      } 

      set { _userNickName = server.HtmlEncode(value); }
    }

    [Personalizable(), WebBrowsable, WebDisplayName("Pet Name")]
    public String PetName
    {
      get 
      { 
        object o = ViewState["PetName"];
        if (o != null)
          return (string)o;
        else
          return _userPetName;        
      }

      set { _userPetName = server.HtmlEncode(value); }
    }

    [Personalizable(), WebBrowsable(), WebDisplayName("Special Day")]
    public DateTime SpecialDay
    {
      get
      {
        object o = ViewState["SpecialDay"];
        if (o != null)
          return (DateTime)o;
        else
          return _userSpecialDate;
        
      }

      set { _userSpecialDate = value; }
    }

    [Personalizable(), WebBrowsable(), WebDisplayName("Job Type"), 
      WebDescription("Select the category that corresponds to your job.")]
    public JobTypeName UserJobType
    {
      get
      {
        object o = ViewState["UserJobType"];
        if (o != null)
          return (JobTypeName)o;
        else
          return _userJobType;
      }

      set { _userJobType = (JobTypeName)value; }
    }

    [Personalizable(), WebBrowsable(), WebDisplayName("Is Current")]
    public Boolean IsCurrent
    {
      get
      {
        object o = ViewState["IsCurrent"];
        if (o != null)
          return (Boolean)o;
        else
          return _userIsCurrent;
      }

      set { _userIsCurrent = value; }
    }


    protected override void CreateChildControls()
    {
      Controls.Clear();

      NickNameLabel = new Label();
      NickNameLabel.Text = this.NickName;
      SetControlAttributes(NickNameLabel);

      PetNickNameLabel = new Label();
      PetNickNameLabel.Text = this.PetName;
      SetControlAttributes(PetNickNameLabel);

      SpecialDateLabel = new Label();
      SpecialDateLabel.Text = this.SpecialDay.ToShortDateString();
      SetControlAttributes(SpecialDateLabel);

      IsCurrentCheckBox = new CheckBox();
      IsCurrentCheckBox.Checked = this.IsCurrent;
      SetControlAttributes(IsCurrentCheckBox);

      JobTypeLabel = new Label();
      JobTypeLabel.Text = this.UserJobType.ToString();
      SetControlAttributes(JobTypeLabel);

      ChildControlsCreated = true;

    }

    private void SetControlAttributes(WebControl ctl)
    {
      ctl.BackColor = Color.White;
      ctl.BorderWidth = 1;
      ctl.Width = 200;
      this.Controls.Add(ctl);
    }

    protected override void RenderContents(HtmlTextWriter writer)
    {
      writer.Write("Nickname:");
      writer.WriteBreak();
      NickNameLabel.RenderControl(writer);
      writer.WriteBreak();
      writer.Write("Pet Name:");
      writer.WriteBreak();
      PetNickNameLabel.RenderControl(writer);
      writer.WriteBreak();
      writer.Write("Special Date:");
      writer.WriteBreak();
      SpecialDateLabel.RenderControl(writer);
      writer.WriteBreak();
      writer.Write("Job Type:");
      writer.WriteBreak();
      JobTypeLabel.RenderControl(writer);
      writer.WriteBreak();
      writer.Write("Current:");
      writer.WriteBreak();
      IsCurrentCheckBox.RenderControl(writer);
    }
  }
}

Lorsque vous chargez la page dans un navigateur, sélectionnez Modifier dans le contrôle de liste déroulante Mode d'affichage pour passer en mode édition. Vous pouvez cliquer dans le menu des verbes (la flèche vers le bas) de la barre de titre du contrôle WebPart information utilisateur, puis sur Edition pour modifier le contrôle. Lorsque l'interface utilisateur de modification est visible, vous pouvez examiner le contrôle PropertyGridEditorPart. Remarquez qu'un contrôle est rendu pour chacune des propriétés de la classe UserInfoWebPart, selon le type de la propriété. Si vous apportez des modifications dans l'interface utilisateur de modification, puis cliquez sur le bouton Appliquer, la liste déroulante Mode d'affichage vous permet de ramener la page en mode de navigation et de consulter l'effet complet des modifications.

  • AspNetHostingPermission  pour opérer dans un environnement hébergé. Valeur de demande : LinkDemand ; valeur d'autorisation : Minimal

System.Object
   System.Web.UI.Control
     System.Web.UI.WebControls.WebControl
       System.Web.UI.WebControls.Panel
         System.Web.UI.WebControls.WebParts.Part
           System.Web.UI.WebControls.WebParts.EditorPart
            System.Web.UI.WebControls.WebParts.PropertyGridEditorPart

Les membres statiques publics (Shared en Visual Basic) de ce type sont thread-safe. Il n'est pas garanti que les membres d'instance soient thread-safe.

Windows 98, Windows 2000 SP4, Windows Millennium Edition, Windows Server 2003, Windows XP Édition Media Center, Windows XP Professionnel Édition x64, Windows XP SP2, Windows XP Starter Edition

Le .NET Framework ne prend pas en charge toutes les versions de chaque plate-forme. Pour obtenir la liste des versions prises en charge, consultez Configuration requise.

.NET Framework

Prise en charge dans : 2.0
Afficher: