EditorPartCollection Klasse
Definition
Wichtig
Einige Informationen beziehen sich auf Vorabversionen, die vor dem Release ggf. grundlegend überarbeitet werden. Microsoft übernimmt hinsichtlich der hier bereitgestellten Informationen keine Gewährleistungen, seien sie ausdrücklich oder konkludent.
Enthält eine Auflistung von Steuerelementen, die zum Bearbeiten der EditorPart Eigenschaften, des Layouts, der Darstellung und des Verhaltens von WebPart Steuerelementen verwendet werden. Diese Klasse kann nicht vererbt werden.
public ref class EditorPartCollection sealed : System::Collections::ReadOnlyCollectionBase
public sealed class EditorPartCollection : System.Collections.ReadOnlyCollectionBase
type EditorPartCollection = class
inherit ReadOnlyCollectionBase
Public NotInheritable Class EditorPartCollection
Inherits ReadOnlyCollectionBase
- Vererbung
Beispiele
Im folgenden Codebeispiel werden verschiedene Verwendungen der EditorPartCollection Klasse veranschaulicht. In diesem Codebeispiel gibt es vier Teile:
Ein Benutzersteuerelement, mit dem Sie Anzeigemodi auf einer Webparts-Seite ändern können.
Eine Klasse für ein benutzerdefiniertes WebPart Steuerelement namens
TextDisplayWebPart, auf das auf die Webseite verwiesen wird und von den EditorPart Steuerelementen bearbeitet wird.Eine Webseite, die auf das
TextDisplayWebPartSteuerelement verweist, enthält ein EditorZone Steuerelement mit mehreren Steuerelementen EditorPart aus dem in der Zone deklarierten Webpart-Steuerelementsatz und enthält einen ereignisgesteuerten Code zum Erstellen und Bearbeiten eines EditorPartCollection Objekts.Eine Erläuterung der Funktionsweise des Codebeispiels beim Laden in einem Browser.
Der erste Teil dieses Codebeispiels ist das Benutzersteuerelement, mit dem Benutzer Anzeigemodi auf einer Webseite ändern können. Ausführliche Informationen zu Anzeigemodi und einer Beschreibung des Quellcodes in diesem Steuerelement finden Sie unter Walkthrough: Changing Display Modes on a Web Parts Page.
<%@ 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);
}
}
}
// 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;
}
void Page_PreRender(object sender, EventArgs e)
{
DisplayModeDropdown.SelectedValue =
_manager.DisplayMode.Name;
}
</script>
<div>
<asp:Panel ID="Panel1" runat="server"
Borderwidth="1"
Width="125"
BackColor="lightgray"
Font-Names="Verdana, Arial, Sans Serif" >
<asp:Label ID="Label1" runat="server"
Text=" 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:Panel>
</div>
<%@ control language="vb" classname="DisplayModeMenuVB"%>
<script runat="server">
' Use a field to reference the current WebPartManager.
Dim _manager As WebPartManager
Sub Page_Init(ByVal sender As Object, ByVal e As EventArgs)
AddHandler Page.InitComplete, AddressOf InitComplete
End Sub
Sub InitComplete(ByVal sender As Object, ByVal e As System.EventArgs)
_manager = WebPartManager.GetCurrentWebPartManager(Page)
Dim browseModeName As String = _
WebPartManager.BrowseDisplayMode.Name
' Fill the dropdown with the names of supported display modes.
Dim mode As WebPartDisplayMode
For Each mode In _manager.SupportedDisplayModes
Dim modeName As String = mode.Name
' Make sure a mode is enabled before adding it.
If mode.IsEnabled(_manager) Then
Dim item As New ListItem(modeName, modeName)
DisplayModeDropdown.Items.Add(item)
End If
Next mode
End Sub
' Change the page to the selected display mode.
Sub DisplayModeDropdown_SelectedIndexChanged(ByVal sender As Object, _
ByVal e As EventArgs)
Dim selectedMode As String = DisplayModeDropdown.SelectedValue
Dim mode As WebPartDisplayMode = _
_manager.SupportedDisplayModes(selectedMode)
If Not (mode Is Nothing) Then
_manager.DisplayMode = mode
End If
End Sub
Sub Page_PreRender(ByVal sender As Object, ByVal e As EventArgs)
DisplayModeDropdown.SelectedValue = _manager.DisplayMode.Name
End Sub
</script>
<div>
<asp:Panel ID="Panel1" runat="server"
Borderwidth="1"
Width="125"
BackColor="lightgray"
Font-Names="Verdana, Arial, Sans Serif" >
<asp:Label ID="Label1" runat="server"
Text=" 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:Panel>
</div>
Der zweite Teil des Codebeispiels ist das TextDisplayWebPart Steuerelement. Damit das Codebeispiel ausgeführt werden kann, müssen Sie diesen Quellcode kompilieren. Sie können sie explizit kompilieren und die resultierende Assembly im Ordner "Bin" ihrer Website oder im globalen Assemblycache ablegen. Alternativ können Sie den Quellcode im App_Code Ordner Ihrer Website ablegen, in dem er zur Laufzeit dynamisch kompiliert wird. Eine exemplarische Vorgehensweise, die beide Methoden der Kompilierung veranschaulicht, finden Sie unter Walkthrough: Developing and Using a Custom Web Server Control.
Beachten Sie, dass das Steuerelement über eine Eigenschaft mit dem Namen verfügt ContentText. Diese Eigenschaft enthält den Wert, den der Benutzer in das Textfeld eingibt. Diese benutzerdefinierte Eigenschaft kann bearbeitet werden, wenn sich das Steuerelement im Bearbeitungsmodus befindet, zusammen mit den Standardsteuerelementeigenschaften WebPart .
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
Der dritte Teil des Codebeispiels ist die Webseite. Beachten Sie, dass das <asp:editorzone> Element für die Seite Deklarationen für drei EditorPart Steuerelemente enthält. Zwei dieser Steuerelemente werden Teil eines benutzerdefinierten EditorPartCollection Objekts, das erstellt wird, wenn die Button1_Click Methode ausgeführt wird.
<%@ page language="c#" %>
<%@ register TagPrefix="uc1"
TagName="DisplayModeMenu"
Src="DisplayModecs.ascx" %>
<%@ 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">
<script runat="server">
protected void Button1_Click(object sender, EventArgs e)
{
ArrayList list = new ArrayList(2);
list.Add(AppearanceEditorPart1);
list.Add(PropertyGridEditorPart1);
// Pass an ICollection object to the constructor.
EditorPartCollection myParts = new EditorPartCollection(list);
foreach (EditorPart editor in myParts)
{
editor.BackColor = System.Drawing.Color.LightBlue;
editor.Description = "My " + editor.DisplayTitle + " editor.";
}
// Use the IndexOf property to locate an EditorPart control.
int propertyGridPart = myParts.IndexOf(PropertyGridEditorPart1);
myParts[propertyGridPart].ChromeType = PartChromeType.TitleOnly;
// Use the Contains method to see if an EditorPart exists.
if(!myParts.Contains(LayoutEditorPart1))
LayoutEditorPart1.BackColor = System.Drawing.Color.LightYellow;
// Use the CopyTo method to create an array of EditorParts.
EditorPart[] partArray = new EditorPart[3];
partArray[0] = LayoutEditorPart1;
myParts.CopyTo(partArray,1);
Label1.Text = "<h3>EditorParts in Custom Array</h3>";
foreach (EditorPart ePart in partArray)
{
Label1.Text += ePart.Title + "<br />";
}
}
</script>
<html xmlns="http://www.w3.org/1999/xhtml" >
<head id="Head1" runat="server">
<title>
Text Display WebPart with AppearanceEditorPart
</title>
</head>
<body>
<form id="form1" runat="server">
<asp:webpartmanager id="WebPartManager1" runat="server" />
<uc1:DisplayModeMenu ID="DisplayModeMenu1" runat="server" />
<asp:webpartzone id="zone1" runat="server">
<zonetemplate>
<aspSample:TextDisplayWebPart
runat="server"
id="textwebpart"
title = "Text Content WebPart" />
</zonetemplate>
</asp:webpartzone>
<asp:EditorZone ID="EditorZone1" runat="server">
<ZoneTemplate>
<asp:AppearanceEditorPart ID="AppearanceEditorPart1"
runat="server" />
<asp:LayoutEditorPart ID="LayoutEditorPart1"
runat="server" />
<asp:PropertyGridEditorPart ID="PropertyGridEditorPart1"
runat="server" />
</ZoneTemplate>
</asp:EditorZone>
<asp:Button ID="Button1" runat="server"
Text="Create EditorPartCollection"
OnClick="Button1_Click" />
<asp:Label ID="Label1" runat="server" Text="" />
</form>
</body>
</html>
<%@ page language="vb" %>
<%@ register TagPrefix="uc1"
TagName="DisplayModeMenu"
Src="DisplayModevb.ascx" %>
<%@ register tagprefix="aspSample"
Namespace="Samples.AspNet.VB.Controls"
Assembly="TextDisplayWebPartVB" %>
<!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 EventArgs)
Dim list As New ArrayList(2)
list.Add(AppearanceEditorPart1)
list.Add(PropertyGridEditorPart1)
' Pass an ICollection object to the constructor.
Dim myParts As New EditorPartCollection(list)
Dim editor As EditorPart
For Each editor In myParts
editor.BackColor = System.Drawing.Color.LightBlue
editor.Description = "My " + editor.DisplayTitle + " editor."
Next editor
' Use the IndexOf property to locate an EditorPart control.
Dim propertyGridPart As Integer = _
myParts.IndexOf(PropertyGridEditorPart1)
myParts(propertyGridPart).ChromeType = PartChromeType.TitleOnly
' Use the Contains method to see if an EditorPart exists.
If Not myParts.Contains(LayoutEditorPart1) Then
LayoutEditorPart1.BackColor = System.Drawing.Color.LightYellow
End If
' Use the CopyTo method to create an array of EditorParts.
Dim partArray(2) As EditorPart
partArray(0) = LayoutEditorPart1
myParts.CopyTo(partArray, 1)
Label1.Text = "<h3>EditorParts in Custom Array</h3>"
Dim ePart As EditorPart
For Each ePart In partArray
Label1.Text += ePart.Title + "<br />"
Next ePart
End Sub
</script>
<html xmlns="http://www.w3.org/1999/xhtml" >
<head id="Head1" runat="server">
<title>
Text Display WebPart with AppearanceEditorPart
</title>
</head>
<body>
<form id="form1" runat="server">
<asp:webpartmanager id="WebPartManager1" runat="server" />
<uc1:DisplayModeMenu ID="DisplayModeMenu1" runat="server" />
<asp:webpartzone id="zone1" runat="server">
<zonetemplate>
<aspSample:TextDisplayWebPart
runat="server"
id="textwebpart"
title = "Text Content WebPart" />
</zonetemplate>
</asp:webpartzone>
<asp:EditorZone ID="EditorZone1" runat="server">
<ZoneTemplate>
<asp:AppearanceEditorPart ID="AppearanceEditorPart1"
runat="server" />
<asp:LayoutEditorPart ID="LayoutEditorPart1"
runat="server" />
<asp:PropertyGridEditorPart ID="PropertyGridEditorPart1"
runat="server" />
</ZoneTemplate>
</asp:EditorZone>
<asp:Button ID="Button1" runat="server"
Text="Create EditorPartCollection"
OnClick="Button1_Click" />
<asp:Label ID="Label1" runat="server" Text="" />
</form>
</body>
</html>
Wenn Sie die Seite in einem Browser laden, können Sie die Seite in den Bearbeitungsmodus wechseln, indem Sie im Dropdownlistensteuerelement "Anzeigemodus" die Option "Bearbeiten" auswählen. Sie können auf das Verbenmenü (nach unten) in der Titelleiste des TextDisplayWebPart Steuerelements klicken und auf "Bearbeiten" klicken, um das Steuerelement zu bearbeiten. Wenn die Bearbeitungs-Benutzeroberfläche (UI) sichtbar ist, können Sie alle EditorPart Steuerelemente sehen. Sie klicken auf die Schaltfläche "EditorPartCollection erstellen ", um die Auswirkungen auf die EditorPart Steuerelemente anzuzeigen, die durch den Code erstellt werden, der das EditorPartCollection Objekt manipuliert. Beachten Sie außerdem, dass Sie mit dem PropertyGridEditorPart Steuerelement die benutzerdefinierte TextDisplayWebPart.ContentText Eigenschaft bearbeiten können. Dies ist möglich, da die Eigenschaft mit einem WebBrowsable Attribut im Quellcode für das Steuerelement gekennzeichnet ist. Wenn Sie den Eigenschaftswert in der Bearbeitungsbenutzeroberfläche aktualisieren, müssen Sie die Seite in den normalen Navigationsmodus zurückgeben, um die Auswirkung der Aktualisierung der TextDisplayWebPart.ContentText Eigenschaft anzuzeigen.
Hinweise
Die EditorPartCollection Klasse ist eine schreibgeschützte Auflistung von EditorPart Steuerelementen, die in der Regel von einer EditorZoneBase Zone verwendet wird, um den Satz von EditorPart Steuerelementen nachzuverfolgen, die in der Zone enthalten sind.
Wenn eine Webpartseite in den Bearbeitungsmodus wechselt und ein Benutzer ein Steuerelement zum Bearbeiten auswählt, beginnt der Bearbeitungsprozess. Die Zone erstellt ein neues EditorPartCollection Objekt, das aus den Steuerelementen besteht, die EditorPart in der Zone enthalten sind. In verschiedenen Phasen des Bearbeitungsprozesses greift die Zone auf das EditorPartCollection Objekt zu, um Eigenschaftswerte zwischen den Steuerelementen in der EditorPart Auflistung und dem WebPart derzeit bearbeiteten Steuerelement zu speichern oder abzurufen.
Sie können eine EditorPartCollection Sammlung von Steuerelementen für ihre eigene programmgesteuerte Verwendung erstellen, wenn Sie beispielsweise einen Massenvorgang für eine Reihe von EditorPart Steuerelementen ausführen müssen. Obwohl das EditorPartCollection Objekt schreibgeschützt ist, können Sie programmgesteuerte Änderungen an den Eigenschaften der zugrunde liegenden Steuerelemente vornehmen, auf die in der Auflistung verwiesen wird.
Konstruktoren
| Name | Beschreibung |
|---|---|
| EditorPartCollection() |
Initialisiert eine leere neue Instanz der EditorPartCollection Klasse. |
| EditorPartCollection(EditorPartCollection, ICollection) |
Initialisiert eine neue Instanz der EditorPartCollection Klasse, indem eine EditorPartCollection Auflistung von EditorPart Steuerelementen und eine ICollection Sammlung zusätzlicher EditorPart Steuerelemente übergeben wird. |
| EditorPartCollection(ICollection) |
Initialisiert eine neue Instanz der EditorPartCollection Klasse, indem eine ICollection Auflistung von EditorPart Steuerelementen übergeben wird. |
Felder
| Name | Beschreibung |
|---|---|
| Empty |
Verweist auf eine statische, schreibgeschützte, leere Instanz der Auflistung. |
Eigenschaften
| Name | Beschreibung |
|---|---|
| Count |
Ruft die Anzahl der In der ReadOnlyCollectionBase Instanz enthaltenen Elemente ab. (Geerbt von ReadOnlyCollectionBase) |
| InnerList |
Ruft die Liste der In der ReadOnlyCollectionBase Instanz enthaltenen Elemente ab. (Geerbt von ReadOnlyCollectionBase) |
| Item[Int32] |
Gibt ein bestimmtes Element der Auflistung gemäß einem eindeutigen Bezeichner zurück. |
Methoden
| Name | Beschreibung |
|---|---|
| Contains(EditorPart) |
Gibt einen Wert zurück, der angibt, ob sich ein bestimmtes Steuerelement in der Auflistung befindet. |
| CopyTo(EditorPart[], Int32) |
Kopiert die Auflistung in ein Array von EditorPart Steuerelementen. |
| Equals(Object) |
Bestimmt, ob das angegebene Objekt dem aktuellen Objekt entspricht. (Geerbt von Object) |
| GetEnumerator() |
Gibt einen Enumerator zurück, der die ReadOnlyCollectionBase Instanz durchläuft. (Geerbt von ReadOnlyCollectionBase) |
| GetHashCode() |
Dient als Standardhashfunktion. (Geerbt von Object) |
| GetType() |
Ruft die Type der aktuellen Instanz ab. (Geerbt von Object) |
| IndexOf(EditorPart) |
Gibt die Position eines bestimmten Elements der Auflistung zurück. |
| MemberwiseClone() |
Erstellt eine flache Kopie der aktuellen Object. (Geerbt von Object) |
| ToString() |
Gibt eine Zeichenfolge zurück, die das aktuelle Objekt darstellt. (Geerbt von Object) |
Explizite Schnittstellenimplementierungen
| Name | Beschreibung |
|---|---|
| ICollection.CopyTo(Array, Int32) |
Kopiert das Gesamte ReadOnlyCollectionBase in einen kompatiblen eindimensionalen Array, beginnend am angegebenen Index des Zielarrays. (Geerbt von ReadOnlyCollectionBase) |
| ICollection.IsSynchronized |
Ruft einen Wert ab, der angibt, ob der Zugriff auf ein ReadOnlyCollectionBase Objekt synchronisiert wird (Threadsicher). (Geerbt von ReadOnlyCollectionBase) |
| ICollection.SyncRoot |
Ruft ein Objekt ab, das zum Synchronisieren des Zugriffs auf ein ReadOnlyCollectionBase Objekt verwendet werden kann. (Geerbt von ReadOnlyCollectionBase) |
Erweiterungsmethoden
| Name | Beschreibung |
|---|---|
| AsParallel(IEnumerable) |
Aktiviert die Parallelisierung einer Abfrage. |
| AsQueryable(IEnumerable) |
Wandelt eine IEnumerable in eine IQueryableum. |
| Cast<TResult>(IEnumerable) |
Wandelt die Elemente eines IEnumerable in den angegebenen Typ um. |
| OfType<TResult>(IEnumerable) |
Filtert die Elemente einer IEnumerable basierend auf einem angegebenen Typ. |