CatalogPartCollection Klasa
Definicja
Ważne
Niektóre informacje odnoszą się do produktu w wersji wstępnej, który może zostać znacząco zmodyfikowany przed wydaniem. Firma Microsoft nie udziela żadnych gwarancji, jawnych lub domniemanych, w odniesieniu do informacji podanych w tym miejscu.
Zawiera kolekcję kontrolek używanych CatalogPart do udostępniania wykazów kontrolek serwera sieci Web, które użytkownicy końcowi mogą dodawać do strony sieci Web. Klasa ta nie może być dziedziczona.
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
- Dziedziczenie
Przykłady
W poniższym przykładzie kodu pokazano kilka zastosowań CatalogPartCollection klasy . Ten przykład kodu obejmuje cztery części:
Kontrolka użytkownika, która umożliwia zmianę trybów wyświetlania na stronie składników Web Part.
Klasa niestandardowej WebPart kontrolki o nazwie
TextDisplayWebPart
, do której odwołuje się strona sieci Web i jest zawarta w jednej z CatalogPart kontrolek.Strona sieci Web, która odwołuje się
TextDisplayWebPart
do kontrolki, zawiera kontrolkę CatalogZone z dwoma CatalogPart kontrolkami z zestawu kontrolek składników Web Part zadeklarowanych w strefie i zawiera kod sterowany zdarzeniami umożliwiający tworzenie obiektu i manipulowanie nim CatalogPartCollection .Wyjaśnienie działania przykładu kodu podczas ładowania go w przeglądarce.
Pierwszą częścią przykładu kodu jest kontrolka użytkownika. Kod źródłowy kontrolki użytkownika pochodzi z innego tematu. Aby ten przykład kodu działał, należy uzyskać plik ascx dla kontrolki użytkownika z przewodnika: zmienianie trybów wyświetlania w temacie Strona składników Web Part i umieścić plik w tym samym folderze co strona .aspx w tym przykładzie kodu.
Drugą częścią przykładu kodu jest kontrolka TextDisplayWebPart
. Aby można było uruchomić przykładowy kod, należy skompilować ten kod źródłowy. Można je skompilować jawnie i umieścić wynikowy zestaw w folderze Bin witryny sieci Web lub globalnej pamięci podręcznej zestawów. Alternatywnie można umieścić kod źródłowy w folderze App_Code witryny, w którym będzie dynamicznie kompilowany w czasie wykonywania. Aby zapoznać się z przewodnikiem, który demonstruje obie metody kompilowania, zobacz Przewodnik: opracowywanie i używanie niestandardowej kontrolki serwera sieci Web. Należy pamiętać, że kontrolka ma właściwość o nazwie ContentText
; ta właściwość zawiera wartość wprowadzaną przez użytkownika w polu tekstowym.
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
Trzecią częścią przykładu kodu jest strona internetowa. Zwróć uwagę, że <asp:catalogzone>
element strony zawiera deklaracje dla dwóch CatalogPart kontrolek. Te kontrolki stają się częścią obiektu niestandardowego CatalogPartCollection tworzonego podczas Button1_Click
wykonywania metody. Kontrolka PageCatalogPart zawiera kontrolki serwera sieci Web, które zostały wcześniej zamknięte przez użytkownika w czasie wykonywania. Kontrolki w kontrolce PageCatalogPart można dodać z powrotem do strony. Kontrolka DeclarativeCatalogPart zawiera deklarację kontrolki niestandardowej TextDisplayWebPart
. Gdy strona jest w trybie wykazu, użytkownik może dodać kontrolkę TextDisplayWebPart
do strony, aby można było jej używać w normalnym trybie przeglądania.
<%@ 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>
Po załadowaniu strony w przeglądarce możesz przełączyć stronę do trybu wykazu, wybierając pozycję Wykaz w kontrolce listy rozwijanej Tryb wyświetlania . Kontrolkę niestandardową WebPart można dodać do strony, zaznaczając pole wyboru obok niej i klikając pozycję Dodaj. Kliknij przycisk Zamknij , aby powrócić do trybu przeglądania. Jeśli klikniesz menu czasowników (strzałka w dół wyświetlana na pasku tytułu), a następnie kliknij przycisk Zamknij, kontrolka zostanie usunięta ze strony i dodana do kontrolki PageCatalogPart . Wróć stronę do trybu wykazu, a następnie kliknij link Wykaz stron , aby wyświetlić zawartość kontrolki PageCatalogPart . Zwróć uwagę, że kontrolka, która została zamknięta, jest teraz widoczna. Kliknięcie przycisku Wyświetl właściwości elementu CatalogPart powoduje CatalogPartCollection uzyskanie dostępu do obiektu i wyświetlenie niektórych właściwości zawartych CatalogPart kontrolek.
Uwagi
Klasa CatalogPartCollection jest kolekcją CatalogPart kontrolek tylko do odczytu, zwykle używaną przez strefę CatalogZoneBase do śledzenia zestawu CatalogPart kontrolek zawartych w strefie.
Gdy strona składników Web Part wchodzi w tryb wykazu, strefa tworzy nowy CatalogPartCollection obiekt składający się z CatalogPart kontrolek. Każda kontrolka CatalogPart w kolekcji może zawierać odwołania do zera lub większej liczby kontrolek serwera sieci Web, które są wyświetlane w formie wykazu dostępnych kontrolek serwera.
Możesz utworzyć CatalogPartCollection kolekcję kontrolek do własnego użycia programowego, jeśli na przykład musisz wykonać operację masową na zestawie CatalogPart kontrolek. Mimo że CatalogPartCollection obiekt jest tylko do odczytu, możesz wprowadzić zmiany programowe w podstawowych kontrolkach, do których odwołuje się kolekcja.
Konstruktory
CatalogPartCollection() |
Inicjuje nowe, puste wystąpienie CatalogPartCollection klasy. |
CatalogPartCollection(CatalogPartCollection, ICollection) |
Inicjuje CatalogPartCollection nowe wystąpienie klasy, przekazując ICollection kolekcję istniejących CatalogPart kontrolek w strefie i dodatkową kolekcję kontrolek. |
CatalogPartCollection(ICollection) |
Inicjuje CatalogPartCollection nowe wystąpienie klasy, przekazując ICollection kolekcję CatalogPart kontrolek. |
Pola
Empty |
Odwołuje się do statycznego, tylko do odczytu, pustego wystąpienia kolekcji. |
Właściwości
Count |
Pobiera liczbę elementów zawartych w wystąpieniu ReadOnlyCollectionBase . (Odziedziczone po ReadOnlyCollectionBase) |
InnerList |
Pobiera listę elementów zawartych w wystąpieniu ReadOnlyCollectionBase . (Odziedziczone po ReadOnlyCollectionBase) |
Item[Int32] |
Pobiera lub ustawia element członkowski kolekcji na podstawie jego pozycji w kolekcji. |
Item[String] |
Zwraca element członkowski kolekcji na podstawie unikatowego identyfikatora ciągu. |
Metody
Contains(CatalogPart) |
Zwraca wartość wskazującą, czy określona kontrolka istnieje w kolekcji. |
CopyTo(CatalogPart[], Int32) |
Kopiuje kolekcję do tablicy CatalogPart obiektów. |
Equals(Object) |
Określa, czy dany obiekt jest taki sam, jak bieżący obiekt. (Odziedziczone po Object) |
GetEnumerator() |
Zwraca moduł wyliczający, który iteruje po wystąpieniu ReadOnlyCollectionBase . (Odziedziczone po ReadOnlyCollectionBase) |
GetHashCode() |
Służy jako domyślna funkcja skrótu. (Odziedziczone po Object) |
GetType() |
Type Pobiera wartość bieżącego wystąpienia. (Odziedziczone po Object) |
IndexOf(CatalogPart) |
Zwraca pozycję określonego elementu członkowskiego kolekcji. |
MemberwiseClone() |
Tworzy płytkią kopię bieżącego Objectelementu . (Odziedziczone po Object) |
ToString() |
Zwraca ciąg reprezentujący bieżący obiekt. (Odziedziczone po Object) |
Jawne implementacje interfejsu
ICollection.CopyTo(Array, Int32) |
Kopiuje całość ReadOnlyCollectionBase do zgodnego jednowymiarowego Arrayobiektu , zaczynając od określonego indeksu tablicy docelowej. (Odziedziczone po ReadOnlyCollectionBase) |
ICollection.IsSynchronized |
Pobiera wartość wskazującą ReadOnlyCollectionBase , czy dostęp do obiektu jest synchronizowany (bezpieczny wątek). (Odziedziczone po ReadOnlyCollectionBase) |
ICollection.SyncRoot |
Pobiera obiekt, który może służyć do synchronizowania dostępu do ReadOnlyCollectionBase obiektu. (Odziedziczone po ReadOnlyCollectionBase) |
Metody rozszerzania
Cast<TResult>(IEnumerable) |
Rzutuje elementy obiektu IEnumerable na określony typ. |
OfType<TResult>(IEnumerable) |
Filtruje elementy IEnumerable elementu na podstawie określonego typu. |
AsParallel(IEnumerable) |
Umożliwia równoległość zapytania. |
AsQueryable(IEnumerable) |
Konwertuje element IEnumerable na .IQueryable |