CatalogPartCollection Klas

Definitie

Bevat een verzameling CatalogPart besturingselementen die worden gebruikt om catalogi van webserverbesturingselementen te bieden die eindgebruikers kunnen toevoegen aan een webpagina. Deze klasse kan niet worden overgenomen.

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
Overname
CatalogPartCollection

Voorbeelden

In het volgende codevoorbeeld ziet u verschillende toepassingen van de CatalogPartCollection klasse. Dit codevoorbeeld bevat vier onderdelen:

  • Een gebruikersbeheer waarmee u weergavemodi op een pagina met webonderdelen kunt wijzigen.

  • Een klasse voor een aangepast besturingselement WebPart met de naam TextDisplayWebPart, waarnaar wordt verwezen op de webpagina en is opgenomen in een van de CatalogPart besturingselementen.

  • Een webpagina die verwijst naar het TextDisplayWebPart besturingselement, bevat een CatalogZone besturingselement met twee van de CatalogPart besturingselementen uit de set webonderdelen die in de zone zijn gedeclareerd en bevat gebeurtenisgestuurde code om een CatalogPartCollection object te maken en te bewerken.

  • Een uitleg van hoe het codevoorbeeld werkt wanneer u het laadt in een browser.

Het eerste deel van het codevoorbeeld is het gebruikersbeheer. De broncode voor het gebruikersbeheer komt uit een ander onderwerp. Om dit codevoorbeeld te laten werken, moet u het ASCX-bestand voor het gebruikersbeheer ophalen uit het scenario: Weergavemodi wijzigen op een paginaonderwerp met webonderdelen en het bestand in dezelfde map plaatsen als de .aspx pagina in dit codevoorbeeld.

Het tweede deel van het codevoorbeeld is het TextDisplayWebPart besturingselement. Als u het codevoorbeeld wilt uitvoeren, moet u deze broncode compileren. U kunt deze expliciet compileren en de resulterende assembly in de map Bin van uw website of de globale assemblycache plaatsen. U kunt de broncode ook in de map App_Code van uw site plaatsen, waar deze dynamisch wordt gecompileerd tijdens runtime. Zie Walkthrough: Een aangepast webserverbeheer ontwikkelen en gebruiken voor een overzicht van beide methoden voor het compileren. Houd er rekening mee dat het besturingselement een eigenschap heeft met de naam ContentText; deze eigenschap bevat de waarde die de gebruiker invoert in het tekstvak.

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

Het derde deel van het codevoorbeeld is de webpagina. U ziet dat het <asp:catalogzone> element voor de pagina declaraties voor twee CatalogPart besturingselementen bevat. Deze besturingselementen maken deel uit van een aangepast CatalogPartCollection object dat wordt gemaakt wanneer de Button1_Click methode wordt uitgevoerd. Het PageCatalogPart besturingselement bevat webserverbesturingselementen die eerder zijn gesloten door een gebruiker tijdens runtime. Besturingselementen in het PageCatalogPart besturingselement kunnen weer worden toegevoegd aan een pagina. Het DeclarativeCatalogPart besturingselement bevat een declaratie van het aangepaste TextDisplayWebPart besturingselement. Wanneer de pagina zich in de catalogusmodus bevindt, kan een gebruiker het TextDisplayWebPart besturingselement toevoegen aan de pagina, zodat deze in de normale bladermodus kan worden gebruikt.

<%@ 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>

Wanneer u de pagina in een browser laadt, kunt u de pagina overschakelen naar de catalogusmodus door Catalogus te selecteren in de vervolgkeuzelijst Weergavemodus . U kunt het aangepaste WebPart besturingselement toevoegen aan de pagina door het selectievakje ernaast in te schakelen en op Toevoegen te klikken. Klik op Sluiten om de pagina te retourneren om door de bladermodus te bladeren. Als u in het besturingselement dat u zojuist hebt toegevoegd, op het menu Werkwoorden klikt (de pijl-omlaag die op de titelbalk wordt weergegeven) en vervolgens op Sluiten klikt, wordt het besturingselement van de pagina verwijderd en toegevoegd aan het PageCatalogPart besturingselement. Ga terug naar de catalogusmodus en klik op de koppeling Paginacatalogus om de inhoud van het PageCatalogPart besturingselement weer te geven. U ziet dat het besturingselement dat u nu hebt gesloten, daar wordt weergegeven. Als u op de knop Eigenschappen van CatalogPart weergeven klikt, wordt het CatalogPartCollection object geopend en worden bepaalde eigenschappen van de ingesloten CatalogPart besturingselementen weergegeven.

Opmerkingen

De CatalogPartCollection klasse is een alleen-lezen verzameling CatalogPart besturingselementen, die doorgaans door een CatalogZoneBase zone worden gebruikt om de set CatalogPart besturingselementen in de zone bij te houden.

Wanneer een pagina met webonderdelen de catalogusmodus opent, wordt in de zone een nieuw CatalogPartCollection object gemaakt dat bestaat uit de CatalogPart besturingselementen. Elk CatalogPart besturingselement in de verzameling kan verwijzingen bevatten naar nul of meer webserverbesturingselementen, die worden weergegeven in de vorm van een catalogus met beschikbare serverbesturingselementen.

U kunt een CatalogPartCollection verzameling besturingselementen maken voor uw eigen programmatisch gebruik als u bijvoorbeeld een massabewerking moet uitvoeren op een set CatalogPart besturingselementen. Hoewel het CatalogPartCollection object alleen-lezen is, kunt u programmatische wijzigingen aanbrengen in de onderliggende besturingselementen waarnaar in de verzameling wordt verwezen.

Constructors

Name Description
CatalogPartCollection()

Initialiseert een nieuwe, lege instantie van de CatalogPartCollection klasse.

CatalogPartCollection(CatalogPartCollection, ICollection)

Initialiseert een nieuw exemplaar van de CatalogPartCollection klasse door een ICollection verzameling bestaande CatalogPart besturingselementen in een zone door te geven en een extra verzameling besturingselementen.

CatalogPartCollection(ICollection)

Initialiseert een nieuw exemplaar van de CatalogPartCollection klasse door een ICollection verzameling CatalogPart besturingselementen door te geven.

Velden

Name Description
Empty

Verwijst naar een statisch, alleen-lezen, leeg exemplaar van de verzameling.

Eigenschappen

Name Description
Count

Hiermee haalt u het aantal elementen op dat in het ReadOnlyCollectionBase exemplaar is opgenomen.

(Overgenomen van ReadOnlyCollectionBase)
InnerList

Hiermee haalt u de lijst met elementen op die zijn opgenomen in het ReadOnlyCollectionBase exemplaar.

(Overgenomen van ReadOnlyCollectionBase)
Item[Int32]

Hiermee haalt u een lid van de verzameling op of stelt u deze in op basis van de positie in de verzameling.

Item[String]

Retourneert een lid van de verzameling op basis van een unieke tekenreeks-id.

Methoden

Name Description
Contains(CatalogPart)

Retourneert een waarde die aangeeft of een bepaald besturingselement in de verzameling bestaat.

CopyTo(CatalogPart[], Int32)

Hiermee kopieert u de verzameling naar een matrix met CatalogPart objecten.

Equals(Object)

Bepaalt of het opgegeven object gelijk is aan het huidige object.

(Overgenomen van Object)
GetEnumerator()

Retourneert een enumerator die door het ReadOnlyCollectionBase exemplaar wordt herhaald.

(Overgenomen van ReadOnlyCollectionBase)
GetHashCode()

Fungeert als de standaardhashfunctie.

(Overgenomen van Object)
GetType()

Hiermee haalt u de Type huidige instantie op.

(Overgenomen van Object)
IndexOf(CatalogPart)

Retourneert de positie van een bepaald lid van de verzameling.

MemberwiseClone()

Hiermee maakt u een ondiepe kopie van de huidige Object.

(Overgenomen van Object)
ToString()

Retourneert een tekenreeks die het huidige object vertegenwoordigt.

(Overgenomen van Object)

Expliciete interface-implementaties

Name Description
ICollection.CopyTo(Array, Int32)

Kopieert het hele ReadOnlyCollectionBase naar een compatibele eendimensionale Arraywaarde, beginnend bij de opgegeven index van de doelmatrix.

(Overgenomen van ReadOnlyCollectionBase)
ICollection.IsSynchronized

Hiermee wordt een waarde opgehaald die aangeeft of de toegang tot een ReadOnlyCollectionBase object wordt gesynchroniseerd (thread safe).

(Overgenomen van ReadOnlyCollectionBase)
ICollection.SyncRoot

Hiermee haalt u een object op dat kan worden gebruikt om de toegang tot een ReadOnlyCollectionBase object te synchroniseren.

(Overgenomen van ReadOnlyCollectionBase)

Extensiemethoden

Name Description
AsParallel(IEnumerable)

Hiermee schakelt u parallelle uitvoering van een query in.

AsQueryable(IEnumerable)

Converteert een IEnumerable naar een IQueryable.

Cast<TResult>(IEnumerable)

Cast de elementen van een IEnumerable naar het opgegeven type.

OfType<TResult>(IEnumerable)

Hiermee filtert u de elementen van een IEnumerable op basis van een opgegeven type.

Van toepassing op

Zie ook