CatalogPartCollection 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 CatalogPartSteuerelementen, mit der Kataloge von Webserversteuerelementen bereitgestellt werden, die Endbenutzer zu einer Webseite hinzufügen können. Diese Klasse kann nicht vererbt werden.
public ref class CatalogPartCollection sealed : System::Collections::ReadOnlyCollectionBase
public sealed class CatalogPartCollection : System.Collections.ReadOnlyCollectionBase
type CatalogPartCollection = class
inherit ReadOnlyCollectionBase
Public NotInheritable Class CatalogPartCollection
Inherits ReadOnlyCollectionBase
- Vererbung
Beispiele
Im folgenden Codebeispiel werden mehrere Verwendungen der CatalogPartCollection -Klasse veranschaulicht. Dieses Codebeispiel besteht aus vier Teilen:
Ein Benutzersteuerelement, mit dem Sie die Anzeigemodi auf einer Webparts-Seite ändern können.
Eine Klasse für ein benutzerdefiniertes WebPart Steuerelement namens
TextDisplayWebPart
, auf das in der Webseite verwiesen wird und in einem der CatalogPart Steuerelemente enthalten ist.Eine Webseite, die auf das
TextDisplayWebPart
Steuerelement verweist, enthält ein CatalogZone Steuerelement mit zwei der CatalogPart Steuerelemente aus dem in der Zone deklarierten Webparts-Steuerelementsatz und enthält ereignisgesteuerten Code zum Erstellen und Bearbeiten eines CatalogPartCollection Objekts.Eine Erklärung, wie das Codebeispiel funktioniert, wenn Sie es in einem Browser laden.
Der erste Teil des Codebeispiels ist das Benutzersteuerelement. Der Quellcode für das Benutzersteuerelement stammt aus einem anderen Thema. Damit dieses Codebeispiel funktioniert, müssen Sie die ASCX-Datei für das Benutzersteuerelement aus dem Thema Exemplarische Vorgehensweise: Ändern von Anzeigemodi auf einer Webpartseite abrufen und die Datei im gleichen Ordner wie die .aspx-Seite in diesem Codebeispiel ablegen.
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 Ordner App_Code Ihrer Website ablegen, wo er zur Laufzeit dynamisch kompiliert wird. Eine exemplarische Vorgehensweise, die beide Kompilierungsmethoden veranschaulicht, finden Sie unter Exemplarische Vorgehensweise: Entwickeln und Verwenden eines benutzerdefinierten Webserversteuerelements. Beachten Sie, dass das Steuerelement über eine Eigenschaft namens verfügt ContentText
. Diese Eigenschaft enthält den Wert, den der Benutzer in das Textfeld eingibt.
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:catalogzone>
Element für die Seite Deklarationen für zwei CatalogPart Steuerelemente enthält. Diese Steuerelemente werden Teil eines benutzerdefinierten CatalogPartCollection Objekts, das erstellt wird, wenn die Button1_Click
-Methode ausgeführt wird. Das PageCatalogPart Steuerelement enthält Webserversteuerelemente, die zuvor von einem Benutzer zur Laufzeit geschlossen wurden. Steuerelemente im PageCatalogPart Steuerelement können einer Seite wieder hinzugefügt werden. Das DeclarativeCatalogPart Steuerelement enthält eine Deklaration des benutzerdefinierten TextDisplayWebPart
Steuerelements. Wenn sich die Seite im Katalogmodus befindet, kann ein Benutzer das TextDisplayWebPart
Steuerelement der Seite hinzufügen, damit es im normalen Durchsuchenmodus verwendet werden kann.
<%@ Page Language="C#" %>
<%@ register TagPrefix="uc1"
TagName="DisplayModeMenuCS"
Src="DisplayModeMenuCS.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">
// <snippet2>
protected void Button1_Click(object sender, EventArgs e)
{
ArrayList list = new ArrayList(2);
list.Add(PageCatalogPart1);
list.Add(DeclarativeCatalogPart1);
// Pass an ICollection object to the constructor.
CatalogPartCollection myParts = new CatalogPartCollection(list);
foreach (CatalogPart catalog in myParts)
{
catalog.Description = "My " + catalog.DisplayTitle;
}
// Use the IndexOf property to locate a CatalogPart control.
int PageCatalogPartIndex = myParts.IndexOf(PageCatalogPart1);
myParts[PageCatalogPartIndex].ChromeType = PartChromeType.TitleOnly;
// Use the Contains method to see if a CatalogPart control exists.
if (myParts.Contains(PageCatalogPart1))
{
WebPart closedWebPart = null;
WebPartDescriptionCollection descriptions = PageCatalogPart1.GetAvailableWebPartDescriptions();
if (descriptions.Count > 0)
{
closedWebPart = PageCatalogPart1.GetWebPart(descriptions[0]);
closedWebPart.AllowClose = false;
}
}
// Use indexers to display the details of the CatalogPart controls.
Label1.Text = String.Empty;
Label1.Text =
"<h3>PageCatalogPart Details</h3>" +
"ID: " + myParts[0].ID + "<br />" +
"Count: " + myParts[0].GetAvailableWebPartDescriptions().Count;
Label1.Text +=
"<h3>DeclarativeCatalogPart Details</h3>" +
"ID: " + myParts["DeclarativeCatalogPart1"].ID + "<br />" +
"Count: " + myParts["DeclarativeCatalogPart1"].GetAvailableWebPartDescriptions().Count;
}
// </snippet2>
</script>
<html xmlns="http://www.w3.org/1999/xhtml" >
<head id="Head1" runat="server">
<title>PageCatalogPart Details</title>
</head>
<body>
<form id="form1" runat="server">
<asp:WebPartManager ID="WebPartManager1" runat="server" />
<uc1:DisplayModeMenuCS ID="DisplayModeMenu1" runat="server" />
<asp:WebPartZone ID="WebPartZone1" runat="server">
<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>
</ZoneTemplate>
</asp:WebPartZone>
<asp:CatalogZone ID="CatalogZone1" runat="server">
<ZoneTemplate>
<asp:DeclarativeCatalogPart ID="DeclarativeCatalogPart1" runat="server">
<WebPartsTemplate>
<aspSample:TextDisplayWebPart runat="server"
id="TextDisplayWebPart1"
Title="Text Display WebPart" />
</WebPartsTemplate>
</asp:DeclarativeCatalogPart>
<asp:PageCatalogPart ID="PageCatalogPart1" runat="server" />
</ZoneTemplate>
</asp:CatalogZone>
<hr />
<asp:Button ID="Button1"
runat="server"
Text="Display CatalogPart Properties"
OnClick="Button1_Click"/>
<br />
<asp:Label ID="Label1" runat="server" Text="" />
</form>
</body>
</html>
<%@ Page Language="vb" %>
<%@ register TagPrefix="uc1"
TagName="DisplayModeMenuVB"
Src="DisplayModeMenuVB.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">
' <snippet2>
Protected Sub Button1_Click(ByVal sender As Object, ByVal e As EventArgs)
Dim list As New ArrayList(2)
list.Add(PageCatalogPart1)
list.Add(DeclarativeCatalogPart1)
' Pass an ICollection object to the constructor.
Dim myParts As New CatalogPartCollection(list)
Dim catalog As CatalogPart
For Each catalog In myParts
catalog.Description = "My " + catalog.DisplayTitle
Next catalog
' Use the IndexOf property to locate a CatalogPart control.
Dim PageCatalogPartIndex As Integer = _
myParts.IndexOf(PageCatalogPart1)
myParts(PageCatalogPartIndex).ChromeType = PartChromeType.TitleOnly
' Use the Contains method to see if a CatalogPart control exists.
If myParts.Contains(PageCatalogPart1) Then
Dim closedWebPart As WebPart = Nothing
Dim descriptions As WebPartDescriptionCollection = _
PageCatalogPart1.GetAvailableWebPartDescriptions()
If descriptions.Count > 0 Then
closedWebPart = PageCatalogPart1.GetWebPart(descriptions(0))
closedWebPart.AllowClose = False
End If
End If
' Use indexers to display the details of the CatalogPart controls.
Label1.Text = String.Empty
Label1.Text = _
"<h3>PageCatalogPart Details</h3>" & _
"ID: " & myParts(0).ID + "<br />" & _
"Count: " & myParts(0).GetAvailableWebPartDescriptions().Count
Label1.Text += _
"<h3>DeclarativeCatalogPart Details</h3>" & _
"ID: " & myParts("DeclarativeCatalogPart1").ID & "<br />" & _
"Count: " & myParts("DeclarativeCatalogPart1") _
.GetAvailableWebPartDescriptions().Count
End Sub
' </snippet2>
</script>
<html xmlns="http://www.w3.org/1999/xhtml" >
<head id="Head1" runat="server">
<title>PageCatalogPart Details</title>
</head>
<body>
<form id="form1" runat="server">
<asp:WebPartManager ID="WebPartManager1" runat="server" />
<uc1:DisplayModeMenuVB ID="DisplayModeMenu1" runat="server" />
<asp:WebPartZone ID="WebPartZone1" runat="server">
<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>
</ZoneTemplate>
</asp:WebPartZone>
<asp:CatalogZone ID="CatalogZone1" runat="server">
<ZoneTemplate>
<asp:DeclarativeCatalogPart ID="DeclarativeCatalogPart1" runat="server">
<WebPartsTemplate>
<aspSample:TextDisplayWebPart runat="server"
id="TextDisplayWebPart1"
Title="Text Display WebPart" />
</WebPartsTemplate>
</asp:DeclarativeCatalogPart>
<asp:PageCatalogPart ID="PageCatalogPart1" runat="server" />
</ZoneTemplate>
</asp:CatalogZone>
<hr />
<asp:Button ID="Button1"
runat="server"
Text="Display CatalogPart Properties"
OnClick="Button1_Click"/>
<br />
<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 Katalogmodus wechseln, indem Sie im Dropdown-Listensteuerelement Anzeigemodus die Option Katalog auswählen. Sie können das benutzerdefinierte WebPart Steuerelement der Seite hinzufügen, indem Sie das Kontrollkästchen daneben aktivieren und auf Hinzufügen klicken. Klicken Sie auf Schließen , um den Seitenmodus zurückzugeben. Wenn Sie auf dem soeben hinzugefügten Steuerelement auf das Verbenmenü (den Pfeil nach unten, der in der Titelleiste angezeigt wird) und dann auf Schließen klicken, wird das Steuerelement von der Seite entfernt und dem PageCatalogPart Steuerelement hinzugefügt. Kehren Sie die Seite in den Katalogmodus zurück, und klicken Sie auf den Link Seitenkatalog , um den Inhalt des PageCatalogPart Steuerelements anzuzeigen. Beachten Sie, dass das Steuerelement, das Sie geschlossen haben, jetzt dort angezeigt wird. Wenn Sie auf die Schaltfläche Katalogeigenschaften anzeigen klicken, wird auf das CatalogPartCollection Objekt zugegriffen und bestimmte Eigenschaften der enthaltenen CatalogPart Steuerelemente angezeigt.
Hinweise
Die CatalogPartCollection -Klasse ist eine schreibgeschützte Auflistung von Steuerelementen, die in der CatalogPart Regel von einer CatalogZoneBase Zone verwendet wird, um den Satz von CatalogPart Steuerelementen nachzuverfolgen, die in der Zone enthalten sind.
Wenn eine Webpartsseite in den Katalogmodus wechselt, erstellt die Zone ein neues CatalogPartCollection Objekt, das aus den CatalogPart Steuerelementen besteht. Jedes CatalogPart Steuerelement in der Auflistung kann Verweise auf null oder mehr Webserversteuerelemente enthalten, die in Form eines Katalogs verfügbarer Serversteuerelemente angezeigt werden.
Sie können eine CatalogPartCollection Sammlung von Steuerelementen für Ihre eigene programmgesteuerte Verwendung erstellen, wenn Sie beispielsweise einen Massenvorgang für eine Reihe von Steuerelementen CatalogPart ausführen müssen. Obwohl das CatalogPartCollection Objekt schreibgeschützt ist, können Sie programmgesteuerte Änderungen an den zugrunde liegenden Steuerelementen vornehmen, auf die in der Auflistung verwiesen wird.
Konstruktoren
CatalogPartCollection() |
Initialisiert eine neue leere Instanz der CatalogPartCollection-Klasse. |
CatalogPartCollection(CatalogPartCollection, ICollection) |
Initialisiert eine neue Instanz der CatalogPartCollection-Klasse, indem eine ICollection-Auflistung der in einer Zone vorhandenen CatalogPart-Steuerelemente sowie eine zusätzliche Auflistung von Steuerelementen übergeben werden. |
CatalogPartCollection(ICollection) |
Initialisiert eine neue Instanz der CatalogPartCollection-Klasse, indem eine ICollection-Auflistung von CatalogPart-Steuerelementen übergeben wird. |
Felder
Empty |
Verweist auf eine statische, schreibgeschützte, leere Instanz der Auflistung. |
Eigenschaften
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] |
Ruft einen Member der Auflistung auf Grundlage seiner Position in der Auflistung ab oder legt diesen fest. |
Item[String] |
Gibt auf der Grundlage eines eindeutigen Zeichenfolgenbezeichners einen Member der Auflistung zurück. |
Methoden
Contains(CatalogPart) |
Ruft einen Wert ab, der angibt, ob ein bestimmtes Steuerelement in der Auflistung vorhanden ist. |
CopyTo(CatalogPart[], Int32) |
Kopiert die Auflistung in ein Array von CatalogPart-Objekten. |
Equals(Object) |
Bestimmt, ob das angegebene Objekt gleich dem aktuellen Objekt ist. (Geerbt von Object) |
GetEnumerator() |
Gibt einen Enumerator zurück, der die ReadOnlyCollectionBase durchläuft. (Geerbt von ReadOnlyCollectionBase) |
GetHashCode() |
Fungiert als Standardhashfunktion. (Geerbt von Object) |
GetType() |
Ruft den Type der aktuellen Instanz ab. (Geerbt von Object) |
IndexOf(CatalogPart) |
Gibt die Position eines bestimmten Members der Auflistung zurück. |
MemberwiseClone() |
Erstellt eine flache Kopie des aktuellen Object. (Geerbt von Object) |
ToString() |
Gibt eine Zeichenfolge zurück, die das aktuelle Objekt darstellt. (Geerbt von Object) |
Explizite Schnittstellenimplementierungen
ICollection.CopyTo(Array, Int32) |
Kopiert die gesamte ReadOnlyCollectionBase-Instanz in ein kompatibles eindimensionales 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 (threadsicher) ist. (Geerbt von ReadOnlyCollectionBase) |
ICollection.SyncRoot |
Ruft ein Objekt ab, mit dem der Zugriff auf ein ReadOnlyCollectionBase-Objekt synchronisiert werden kann. (Geerbt von ReadOnlyCollectionBase) |
Erweiterungsmethoden
Cast<TResult>(IEnumerable) |
Wandelt die Elemente eines IEnumerable in den angegebenen Typ um |
OfType<TResult>(IEnumerable) |
Filtert die Elemente eines IEnumerable anhand eines angegebenen Typs |
AsParallel(IEnumerable) |
Ermöglicht die Parallelisierung einer Abfrage. |
AsQueryable(IEnumerable) |
Konvertiert einen IEnumerable in einen IQueryable. |