CatalogPartCollection Třída
Definice
Důležité
Některé informace platí pro předběžně vydaný produkt, který se může zásadně změnit, než ho výrobce nebo autor vydá. Microsoft neposkytuje žádné záruky, výslovné ani předpokládané, týkající se zde uváděných informací.
Obsahuje kolekci ovládacích CatalogPart prvků používaných k poskytování katalogů ovládacích prvků webového serveru, které mohou koncoví uživatelé přidat na webovou stránku. Tato třída se nemůže dědit.
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
- Dědičnost
Příklady
Následující příklad kódu ukazuje několik použití CatalogPartCollection třídy. Tento příklad kódu má čtyři části:
Uživatelský ovládací prvek, který umožňuje měnit režimy zobrazení na stránce webových částí.
Třída pro vlastní WebPart ovládací prvek s názvem
TextDisplayWebPart
, který je odkazován na webové stránce a je obsažen v jednom z ovládacích CatalogPart prvků.Webová stránka, která odkazuje na
TextDisplayWebPart
ovládací prvek, obsahuje CatalogZone ovládací prvek se dvěma ovládacími prvky ze sady ovládacích CatalogPart prvků webové části deklarované v zóně a obsahuje kód řízený událostmi pro vytvoření a manipulaci s objektem CatalogPartCollection .Vysvětlení toho, jak příklad kódu funguje, když ho načtete v prohlížeči.
První částí příkladu kódu je uživatelský ovládací prvek. Zdrojový kód uživatelského ovládacího prvku pochází z jiného tématu. Aby tento příklad kódu fungoval, musíte získat soubor .ascx pro uživatelský ovládací prvek z tématu Návod: Změna režimů zobrazení na stránce webových částí a umístit soubor do stejné složky jako stránka .aspx v tomto příkladu kódu.
Druhou částí příkladu kódu je ovládací prvek TextDisplayWebPart
. Aby se příklad kódu spustil, musíte tento zdrojový kód zkompilovat. Můžete ho explicitně zkompilovat a umístit výsledné sestavení do složky Bin webu nebo globální mezipaměti sestavení . Případně můžete zdrojový kód umístit do složky App_Code webu, kde se bude dynamicky kompilovat za běhu. Návod, který ukazuje obě metody kompilace, najdete v tématu Návod: Vývoj a použití vlastního ovládacího prvku webového serveru. Všimněte si, že ovládací prvek má vlastnost s názvem ContentText
; tato vlastnost obsahuje hodnotu, kterou uživatel zadá do textového pole.
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
Třetí částí příkladu kódu je webová stránka. Všimněte si, že <asp:catalogzone>
element stránky obsahuje deklarace pro dva CatalogPart ovládací prvky. Tyto ovládací prvky se stanou součástí vlastního CatalogPartCollection objektu, který se vytvoří při Button1_Click
spuštění metody. Ovládací PageCatalogPart prvek obsahuje ovládací prvky webového serveru, které byly dříve uzavřeny uživatelem za běhu. Ovládací prvky v ovládacím PageCatalogPart prvku lze přidat zpět na stránku. Ovládací DeclarativeCatalogPart prvek obsahuje deklaraci vlastního TextDisplayWebPart
ovládacího prvku. Když je stránka v režimu katalogu, může uživatel přidat TextDisplayWebPart
ovládací prvek na stránku, aby ho bylo možné použít v normálním režimu procházení.
<%@ 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>
Když stránku načtete v prohlížeči, můžete ji přepnout do režimu katalogu tak, že v ovládacím prvku rozevíracího seznamu Režim zobrazení vyberete Katalog. Vlastní WebPart ovládací prvek můžete na stránku přidat tak, že zaškrtnete políčko vedle něj a kliknete na Přidat. Kliknutím na Zavřít vrátíte stránku do režimu procházení. Pokud u právě přidaného ovládacího prvku kliknete na nabídku sloves (šipka dolů, která se zobrazí v záhlaví) a potom kliknete na Zavřít, odebere se ovládací prvek ze stránky a přidá se do PageCatalogPart ovládacího prvku. Vraťte stránku do režimu katalogu a kliknutím na odkaz Katalog stránek zobrazte obsah PageCatalogPart ovládacího prvku. Všimněte si, že ovládací prvek, který jste zavřeli, se teď zobrazuje tam. Kliknutím na tlačítko Zobrazit katalogSoučásti vlastnosti se dostanete k objektu CatalogPartCollection a zobrazíte určité vlastnosti obsažených CatalogPart ovládacích prvků.
Poznámky
Třída CatalogPartCollection je kolekce ovládacích CatalogPart prvků jen pro čtení, která se obvykle používá zónou CatalogZoneBase ke sledování sady ovládacích prvků obsažených CatalogPart v zóně.
Když stránka webových částí přejde do režimu katalogu, zóna vytvoří nový CatalogPartCollection objekt sestávající z ovládacích CatalogPart prvků. Každý CatalogPart ovládací prvek v kolekci může obsahovat odkazy na nula nebo více ovládacích prvků webového serveru, které jsou zobrazeny ve formě katalogu dostupných serverových ovládacích prvků.
Kolekci ovládacích prvků pro vlastní programové použití můžete vytvořit CatalogPartCollection například v případě, že potřebujete provést nějakou hromadnou operaci se sadou ovládacích CatalogPart prvků. I když CatalogPartCollection je objekt jen pro čtení, můžete provádět programové změny v podkladových ovládacích prvcích odkazovaných v kolekci.
Konstruktory
CatalogPartCollection() |
Inicializuje novou prázdnou CatalogPartCollection instanci třídy. |
CatalogPartCollection(CatalogPartCollection, ICollection) |
Inicializuje novou instanci CatalogPartCollection třídy předáním ICollection kolekce existujících CatalogPart ovládacích prvků v zóně a další kolekce ovládacích prvků. |
CatalogPartCollection(ICollection) |
Inicializuje novou instanci CatalogPartCollection třídy předáním ICollection kolekce ovládacích CatalogPart prvků. |
Pole
Empty |
Odkazuje na statickou, jen pro čtení, prázdnou instanci kolekce. |
Vlastnosti
Count |
Získá počet prvků obsažených ReadOnlyCollectionBase v instanci. (Zděděno od ReadOnlyCollectionBase) |
InnerList |
Získá seznam prvků obsažených ReadOnlyCollectionBase v instanci. (Zděděno od ReadOnlyCollectionBase) |
Item[Int32] |
Získá nebo nastaví člen kolekce na základě jeho pozice v kolekci. |
Item[String] |
Vrátí člen kolekce na základě jedinečného identifikátoru řetězce. |
Metody
Contains(CatalogPart) |
Vrátí hodnotu označující, zda v kolekci existuje určitý ovládací prvek. |
CopyTo(CatalogPart[], Int32) |
Zkopíruje kolekci do pole CatalogPart objektů. |
Equals(Object) |
Určí, zda se zadaný objekt rovná aktuálnímu objektu. (Zděděno od Object) |
GetEnumerator() |
Vrátí enumerátor, který iteruje instanci ReadOnlyCollectionBase . (Zděděno od ReadOnlyCollectionBase) |
GetHashCode() |
Slouží jako výchozí hashovací funkce. (Zděděno od Object) |
GetType() |
Získá aktuální Type instanci. (Zděděno od Object) |
IndexOf(CatalogPart) |
Vrátí pozici konkrétního člena kolekce. |
MemberwiseClone() |
Vytvoří mělkou kopii aktuálního Objectsouboru . (Zděděno od Object) |
ToString() |
Vrátí řetězec, který představuje aktuální objekt. (Zděděno od Object) |
Explicitní implementace rozhraní
ICollection.CopyTo(Array, Int32) |
Zkopíruje celý ReadOnlyCollectionBase objekt do kompatibilního jednorozměrného Arrayobjektu , počínaje zadaným indexem cílového pole. (Zděděno od ReadOnlyCollectionBase) |
ICollection.IsSynchronized |
Získá hodnotu označující, zda je synchronizován přístup k objektu ReadOnlyCollectionBase (bezpečný z více vláken). (Zděděno od ReadOnlyCollectionBase) |
ICollection.SyncRoot |
Získá objekt, který lze použít k synchronizaci přístupu k objektu ReadOnlyCollectionBase . (Zděděno od ReadOnlyCollectionBase) |
Metody rozšíření
Cast<TResult>(IEnumerable) |
Přetypuje prvky objektu na IEnumerable zadaný typ. |
OfType<TResult>(IEnumerable) |
Filtruje prvky objektu IEnumerable na základě zadaného typu. |
AsParallel(IEnumerable) |
Umožňuje paralelizaci dotazu. |
AsQueryable(IEnumerable) |
Převede objekt na IEnumerableIQueryable. |