(0) exportieren Drucken
Alle erweitern
Dieser Artikel wurde noch nicht bewertet - Dieses Thema bewerten.

PropertyGridEditorPart-Klasse

Aktualisiert: November 2007

Stellt ein Editorsteuerelement bereit, das es Endbenutzern ermöglicht, benutzerdefinierte Eigenschaften für ein zugeordnetes WebPart-Steuerelement oder Serversteuerelement zu bearbeiten. Die Klasse kann nicht geerbt werden.

Namespace:  System.Web.UI.WebControls.WebParts
Assembly:  System.Web (in System.Web.dll)
[AspNetHostingPermissionAttribute(SecurityAction.LinkDemand, Level = AspNetHostingPermissionLevel.Minimal)]
public sealed class PropertyGridEditorPart : EditorPart
/** @attribute AspNetHostingPermissionAttribute(SecurityAction.LinkDemand, Level = AspNetHostingPermissionLevel.Minimal) */
public final class PropertyGridEditorPart extends EditorPart
public final class PropertyGridEditorPart extends EditorPart
<asp:PropertyGridEditorPart />

Das PropertyGridEditorPart stellt eine generische Benutzeroberfläche bereit, über die Benutzer benutzerdefinierte Eigenschaften für WebPart-Steuerelemente und Serversteuerelemente, die sich in WebPartZoneBase-Zonen befinden, bearbeiten können. Im Gegensatz dazu können mit den anderen EditorPart-Steuerelementen, wie den AppearanceEditorPart-Steuerelementen und den BehaviorEditorPart-Steuerelementen, nur vorhandene Eigenschaften für die Benutzeroberfläche aus der WebPart-Klasse bearbeitet werden.

Neben den Tool-orientierten Zonen im Webparts-Steuerelementsatz (ausführliche Informationen dazu finden Sie in der Übersicht für die ToolZone-Klasse), gibt es ebenfalls Tool-orientierte Teilsteuerelemente, wobei sich jedes dieser Teilsteuerelemente in einem entsprechenden Toolzonentyp befinden muss. Diese Art von Steuerelementen im Webparts-Steuerelementsatz verfügt über zwei charakteristische Merkmale:

  • Es sind Hilfssteuerelemente, die Endbenutzern die Personalisierung der Steuerelemente ermöglicht, die die primäre Benutzeroberfläche einer Seite in einer Webpartsanwendung darstellen.

  • Sie sind nur in bestimmten Seitenanzeigemodi sichtbar.

Das PropertyGridEditorPart-Steuerelement ist ein besonderes Steuerelement und nur sichtbar, wenn sich eine Webseite im Bearbeitungsmodus befindet und ein spezielles WebPart-Steuerelement oder Serversteuerelement von einem Benutzer zum Bearbeiten ausgewählt wurde. Das PropertyGridEditorPart-Steuerelement muss sich wie alle anderen EditorPart-Steuerelemente in einer EditorZone-Zone auf der Seite befinden.

k1674cty.alert_caution(de-de,VS.90).gifWichtiger Hinweis:

Eine EditorZone-Zone kann nur EditorPart-Steuerelemente enthalten. EditorPart-Steuerelemente können in keinem anderen Zonentyp platziert werden.

Das PropertyGridEditorPart-Steuerelement stellt eine Bearbeitungsbenutzeroberfläche für Eigenschaften bereit, die im Quellcode mit dem WebBrowsable-Attribut (aus der WebBrowsableAttribute-Klasse) gekennzeichnet sind. Ist eine Eigenschaft mit diesem Attribut gekennzeichnet, erstellt ein PropertyGridEditorPart-Steuerelement die Bearbeitungsbenutzeroberfläche auf der Grundlage des Eigenschaftentyps und verwendet gegebenenfalls ein PropertyDescriptor-Objekt, um den Wert in jedem Bearbeitungssteuerelement in den Eigenschaftentyp zu konvertieren. Sie können außerdem weitere Attribute hinzufügen, mit deren Hilfe das PropertyGridEditorPart-Steuerelement die Bearbeitungsbenutzeroberfläche anzeigen kann. Mit dem WebDisplayName-Attribut (aus der WebDisplayNameAttribute-Klasse) können Sie den Text für die Bezeichnung angeben, die auf der Bearbeitungsbenutzeroberfläche zusammen mit dem jeweiligen Steuerelement angezeigt wird. Mit dem WebDescription-Attribut (aus der WebDescriptionAttribute-Klasse) können Sie den Text für die Bezeichnung angeben, die auf der Bearbeitungsbenutzeroberfläche zusammen mit dem jeweiligen Steuerelement angezeigt wird.

Die Steuerelemente, die erstellt werden, um Eigenschaften der verschiedenen Typen zu bearbeiten, werden in der folgenden Tabelle aufgelistet.

Eigenschaftentyp

Steuerelement, das erstellt wurde, um die Eigenschaft zu bearbeiten

String

TextBox

Int, Float, Unit

TextBox

Boolean

CheckBox

Enum

DropDownList (enthält die Liste mit Enumerationswerten)

DateTime

TextBox

Die PropertyGridEditorPart-Klasse verfügt über eine Title-Eigenschaft, die zum Anzeigen und Festlegen des sichtbaren Titeltextes für das Steuerelement verwendet wird. Außerdem gibt es eine geschützte Display-Eigenschaft, die festlegt, ob das Steuerelement angezeigt wird, wenn die Seite in den Bearbeitungsmodus wechselt.

Die PropertyGridEditorPart-Klasse verfügt ebenfalls über die beiden wichtigen Methoden ApplyChanges und SyncChanges, die sie von der EditorPart-Klasse erbt und überschreibt. Diese Methoden sind besonders wichtig, da sie das Festlegen und Abrufen von Eigenschaftenwerten zwischen den Feldwerten des Editorsteuerelements und den Eigenschaften des bearbeiteten WebPart-Steuerelements ermöglichen.

Da Sie mit dem PropertyGridEditorPart-Steuerelement ausschließlich benutzerdefinierte Eigenschaften bearbeiten können, benötigen Sie zum Bearbeiten von Darstellung, Layout und Verhalten der WebPart-Steuerelemente die anderen EditorPart-Steuerelemente im Webparts-Steuerelementsatz. Zu den anderen Steuerelementen gehören das BehaviorEditorPart-Steuerelement, das LayoutEditorPart-Steuerelement sowie das AppearanceEditorPart-Steuerelement. Diese EditorPart-Steuerelemente sollten die meisten Features bereitstellen, die zum Bearbeiten von WebPart-Steuerelementen erforderlich sind. Bei Bedarf können Sie durch Vererben von der EditorPart-Klasse jedoch auch ein benutzerdefiniertes Editorsteuerelement erstellen. Ein Codebeispiel finden Sie im Übersichtsthema über die EditorPart-Klasse.

k1674cty.alert_note(de-de,VS.90).gifHinweis:

Um Eingabehilfen zu verbessern, wird das PropertyGridEditorPart-Steuerelement innerhalb eines <fieldset>-Elements gerendert. Das <fieldset>-Element gruppiert den zum Bearbeiten verwendeten zugehörigen Steuerelementsatz im PropertyGridEditorPart-Steuerelement und vereinfacht die Registerkartennavigation zwischen diesen Steuerelementen sowohl für visuelle Benutzeragents (z. B. normale Webbrowser) als auch für sprachorientierte Benutzeragents (z. B. Screenreadingsoftware).

Eingabehilfen

Das für dieses Steuerelement standardmäßig wiedergegebene Markup entspricht eventuell nicht den Standards für die Eingabehilfen wie beispielsweise den Richtlinien der Web Content Accessibility Guidelines 1.0 (WCAG) mit der Priorität 1. Details über die Unterstützung von Eingabehilfen für dieses Steuerelement finden Sie unter Steuerelemente und Eingabehilfen von ASP.NET.

TopicLocation
Gewusst wie: Festlegen des Anzeigemodus einer Webparts-SeiteErstellen von ASP.NET-Webanwendungen
Gewusst wie: Festlegen des Anzeigemodus einer Webparts-SeiteErstellen von ASP.NET-Webanwendungen in Visual Studio

Das folgende Codebeispiel veranschaulicht, wie ein PropertyGridEditorPart-Steuerelement auf einer Webseite deklariert und zum Bearbeiten verschiedener Benutzeroberflächeneigenschaften eines WebPart-Steuerelements aktiviert wird. Das Codebeispiel besteht aus vier Teilen:

  • Ein Benutzersteuerelement, mit dessen Hilfe Sie die Anzeigemodi auf einer Webparts-Seite wechseln können.

  • Eine Webseite, die ein EditorZone-Steuerelement, ein PropertyGridEditorPart-Steuerelement und einen Verweis auf ein benutzerdefiniertes WebPart-Steuerelement enthält.

  • Eine Klasse, die das benutzerdefinierte WebPart-Steuerelement enthält.

  • Eine Erklärung der Funktionsweise des Beispiels beim Laden der Seite in einem Browser.

Der Quellcode für das Benutzersteuerelement stammt aus einem anderen Thema. Damit dieses Codebeispiel ausgeführt werden kann, benötigen Sie die ASCX-Datei für das Benutzersteuerelement aus dem Thema Exemplarische Vorgehensweise: Wechseln des Anzeigemodus auf einer Webparts-Seite und müssen die Datei in dem Ordner ablegen, in dem sich die ASPX-Seite aus diesem Codebeispiel befindet.

Der zweite Teil des Codebeispiels ist die Webseite. Sie enthält einen deklarativen Verweis auf ein EditorZone-Steuerelement mit einem untergeordneten <zonetemplate>-Element, das wiederum einen deklarativen Verweis auf ein PropertyGridEditorPart-Steuerelement enthält. Die Seite verweist mithilfe einer Register-Direktive für die Assembly auf das benutzerdefinierte WebPart-Steuerelement und auf das <aspSample:UserInfoWebPart>-Element für das Steuerelement.

<%@ page language="c#" %>
<%@ register TagPrefix="uc1" 
  TagName="DisplayModeMenuCS" 
  Src="DisplayModeMenuCS.ascx" %>
<%@ register tagprefix="aspSample" 
  Namespace="Samples.AspNet.CS.Controls" 
  Assembly="UserInfoWebPartCS" %>
<!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 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 xmlns="http://www.w3.org/1999/xhtml" >
  <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>


Der dritte Teil des Codebeispiels ist eine benutzerdefinierte WebPart-Klasse mit der Bezeichnung UserInfoWebPart, auf die auf der Webseite verwiesen wird. Beachten Sie, dass alle Eigenschaften, die Informationen über einen Benutzer enthalten, mit dem WebBrowsable-Attribut gekennzeichnet sind. Dies aktiviert das PropertyGridEditorPart-Steuerelement, welches die Benutzeroberfläche zum Bearbeiten jener Eigenschaften bereitstellt. Die Eigenschaften sind ebenfalls mit einem WebDisplayName-Attribut gekennzeichnet, damit Sie den Text für die Bezeichnung angeben können, die neben jedem Steuerelement auf der Bearbeitungsbenutzeroberfläche angezeigt wird.

Um das Codebeispiel auszuführen, müssen Sie diesen Quellcode kompilieren. Sie können den Code explizit kompilieren und die sich ergebende Assembly im Ordner Bin der Website oder im globalen Assemblycache ablegen. Alternativ können Sie den Quellcode im Ordner App_Code der Site ablegen, wo er zur Laufzeit dynamisch kompiliert wird. Eine exemplarische Vorgehensweise, die Kompilierungsmethoden veranschaulicht, finden Sie unter Exemplarische Vorgehensweise: Entwickeln und Verwenden eines benutzerdefinierten Serversteuerelements.

k1674cty.alert_security(de-de,VS.90).gifSicherheitshinweis:

In diesem Beispiel wird ein Textfeld verwendet, das Benutzereingaben akzeptiert. Dies stellt ein Sicherheitsrisiko dar. Standardmäßig stellen ASP.NET-Webseiten sicher, dass Benutzereingaben keine Skript- oder HTML-Elemente enthalten. Weitere Informationen finden Sie unter Übersicht über Skriptangriffe.

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);
    }
  }
}


Wählen Sie beim Laden der Seite in einem Browser im Dropdownlisten-Steuerelement Anzeigemodus die Option Bearbeitungsmodus aus, um in den Bearbeitungsmodus zu wechseln. Sie können in der Titelleiste des Benutzerinformations-WebPart-Steuerelements auf das Menü für die Verben (den Pfeil nach unten) und dann auf Bearbeiten klicken, um das Steuerelement zu bearbeiten. Wenn die Bearbeitungsbenutzeroberfläche sichtbar ist, können Sie das PropertyGridEditorPart-Steuerelement sehen. Beachten Sie, dass ein Steuerelement für jede einzelne Eigenschaft der UserInfoWebPart-Klasse auf der Grundlage des Eigenschaftentyps gerendert wird. Wenn Sie Änderungen an der Bearbeitungsbenutzeroberfläche vornehmen und auf die Schaltfläche Übernehmen klicken, können Sie die Dropdownliste Display Mode verwenden, um die Seite wieder in den Durchsuchen-Modus zu versetzen und die Bearbeitungsänderungen anzuzeigen.

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
Alle öffentlichen static (Shared in Visual Basic)-Member dieses Typs sind threadsicher. Bei Instanzmembern ist die Threadsicherheit nicht gewährleistet.

Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework und .NET Compact Framework unterstützen nicht alle Versionen sämtlicher Plattformen. Eine Liste der unterstützten Versionen finden Sie unter Systemanforderungen für .NET Framework.

.NET Framework

Unterstützt in: 3.5, 3.0, 2.0
Fanden Sie dies hilfreich?
(1500 verbleibende Zeichen)
Vielen Dank für Ihr Feedback.

Community-Beiträge

HINZUFÜGEN
Microsoft führt eine Onlineumfrage durch, um Ihre Meinung zur MSDN-Website zu erfahren. Wenn Sie sich zur Teilnahme entscheiden, wird Ihnen die Onlineumfrage angezeigt, sobald Sie die MSDN-Website verlassen.

Möchten Sie an der Umfrage teilnehmen?
Anzeigen:
© 2014 Microsoft. Alle Rechte vorbehalten.