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 Steuerelementen, die CatalogPart verwendet werden, um Kataloge von Webserversteuerelementen bereitzustellen, die Endbenutzer 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 verschiedene Verwendungen der CatalogPartCollection 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 in einem der CatalogPart Steuerelemente enthalten ist.Eine Webseite, die auf das
TextDisplayWebPartSteuerelement verweist, enthält ein CatalogZone Steuerelement mit zwei steuerelementen CatalogPart aus dem in der Zone deklarierten Webpart-Steuerelementsatz und enthält ereignisgesteuerten Code zum Erstellen und Bearbeiten eines CatalogPartCollection Objekts.Eine Erläuterung der Funktionsweise des Codebeispiels beim Laden in einem Browser.
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 der exemplarischen Vorgehensweise abrufen: Ändern von Anzeigemodi in einem Webpart-Seitenthema und Platzieren der Datei im selben Ordner wie die .aspx Seite in diesem Codebeispiel.
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.
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 wieder zu einer Seite 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, sodass es im normalen Suchmodus 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 " Katalog " im Dropdownlistensteuerelement " Anzeigemodus " 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 die Seite im Suchmodus zurückzugeben. Wenn Sie auf dem soeben hinzugefügten Steuerelement auf das Verbenmenü (den Abwärtspfeil in der Titelleiste) klicken und dann auf "Schließen" klicken, wird das Steuerelement von der Seite entfernt und dem PageCatalogPart Steuerelement hinzugefügt. Geben 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 jetzt geschlossen haben, dort angezeigt wird. Durch Klicken auf die Schaltfläche " Eigenschaften anzeigen" wird auf das CatalogPartCollection Objekt zugegriffen und bestimmte Eigenschaften der enthaltenen CatalogPart Steuerelemente angezeigt.
Hinweise
Die CatalogPartCollection Klasse ist eine schreibgeschützte Auflistung von CatalogPart Steuerelementen, die in der Regel von einer CatalogZoneBase Zone verwendet werden, um den Satz von CatalogPart Steuerelementen nachzuverfolgen, die in der Zone enthalten sind.
Wenn eine Webpartseite 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 CatalogPart Steuerelementen 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
| Name | Beschreibung |
|---|---|
| CatalogPartCollection() |
Initialisiert eine neue, leere Instanz der CatalogPartCollection Klasse. |
| CatalogPartCollection(CatalogPartCollection, ICollection) |
Initialisiert eine neue Instanz der CatalogPartCollection Klasse, indem eine ICollection Auflistung der vorhandenen CatalogPart Steuerelemente in einer Zone und eine zusätzliche Auflistung von Steuerelementen übergeben wird. |
| CatalogPartCollection(ICollection) |
Initialisiert eine neue Instanz der CatalogPartCollection Klasse, indem eine ICollection Auflistung von CatalogPart 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] |
Dient zum Abrufen oder Festlegen eines Elements der Auflistung basierend auf seiner Position in der Auflistung. |
| Item[String] |
Gibt ein Element der Auflistung basierend auf einem eindeutigen Zeichenfolgenbezeichner zurück. |
Methoden
| Name | Beschreibung |
|---|---|
| Contains(CatalogPart) |
Gibt einen Wert zurück, 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 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(CatalogPart) |
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. |