CatalogPartCollection Klass

Definition

Innehåller en samling CatalogPart kontroller som används för att tillhandahålla kataloger med webbserverkontroller som slutanvändarna kan lägga till på en webbsida. Det går inte att ärva den här klassen.

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

Exempel

I följande kodexempel visas flera användningar av CatalogPartCollection klassen. Det finns fyra delar i det här kodexemplet:

  • En användarkontroll som gör att du kan ändra visningslägen på en webbdelssida.

  • En klass för en anpassad WebPart kontroll med namnet TextDisplayWebPart, som refereras till på webbsidan och finns i en av CatalogPart kontrollerna.

  • En webbsida som refererar till TextDisplayWebPart kontrollen innehåller en CatalogZone kontroll med två av CatalogPart kontrollerna från kontrolluppsättningen Webbdelar som deklarerats i zonen och innehåller händelsedriven kod för att skapa och ändra ett CatalogPartCollection objekt.

  • En förklaring av hur kodexemplet fungerar när du läser in det i en webbläsare.

Den första delen av kodexemplet är användarkontrollen. Källkoden för användarkontrollen kommer från ett annat ämne. För att det här kodexemplet ska fungera måste du hämta .ascx-filen för användarkontrollen från avsnittet Genomgång: Ändra visningslägen på en webbdelssida och placera filen i samma mapp som sidan .aspx i det här kodexemplet.

Den andra delen av kodexemplet TextDisplayWebPart är kontrollen. För att kodexemplet ska köras måste du kompilera den här källkoden. Du kan kompilera den explicit och placera den resulterande sammansättningen i webbplatsens bin-mapp eller den globala sammansättningscacheminnet. Du kan också placera källkoden i webbplatsens App_Code mapp, där den kompileras dynamiskt vid körning. En genomgång som visar båda kompileringsmetoderna finns i Genomgång: Utveckla och använda en anpassad webbserverkontroll. Observera att kontrollen har en egenskap med namnet ContentText. Den här egenskapen innehåller det värde som användaren anger i textrutan.

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

Den tredje delen av kodexemplet är webbsidan. Observera att elementet <asp:catalogzone> för sidan innehåller deklarationer för två CatalogPart kontroller. Dessa kontroller blir en del av ett anpassat CatalogPartCollection objekt som skapas när Button1_Click metoden körs. Kontrollen PageCatalogPart innehåller webbserverkontroller som tidigare har stängts av en användare vid körning. Kontroller i PageCatalogPart kontrollen kan läggas tillbaka till en sida. Kontrollen DeclarativeCatalogPart innehåller en deklaration av den anpassade TextDisplayWebPart kontrollen. När sidan är i katalogläge kan en användare lägga till TextDisplayWebPart kontrollen på sidan så att den kan användas i normalt sökläge.

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

När du läser in sidan i en webbläsare kan du växla sidan till katalogläge genom att välja Katalog i listrutan Visningsläge . Du kan lägga till den anpassade WebPart kontrollen på sidan genom att markera kryssrutan bredvid den och klicka på Lägg till. Klicka på Stäng för att returnera sidan för att bläddra. Om du klickar på verbmenyn (nedåtpilen som visas i namnlisten) och sedan klickar på Stäng, tas kontrollen bort från sidan och läggs till i PageCatalogPart kontrollen. Gå tillbaka till katalogläget och klicka på länken Sidkatalog för att visa innehållet i PageCatalogPart kontrollen. Observera att kontrollen du stängde nu visas där. Om du klickar på knappen Visa katalogDelegenskaper öppnas CatalogPartCollection objektet och vissa egenskaper för de inneslutna CatalogPart kontrollerna visas.

Kommentarer

Klassen CatalogPartCollection är en skrivskyddad samling CatalogPart kontroller, som vanligtvis används av en CatalogZoneBase zon för att spåra den uppsättning CatalogPart kontroller som finns i zonen.

När en webbdelssida går in i katalogläge skapar zonen ett nytt CatalogPartCollection objekt som består av CatalogPart kontrollerna. Varje CatalogPart kontroll i samlingen kan innehålla referenser till noll eller fler webbserverkontroller, som visas i form av en katalog med tillgängliga serverkontroller.

Du kan skapa en CatalogPartCollection samling kontroller för din egen programmatiska användning om du till exempel behöver utföra en massåtgärd på en uppsättning CatalogPart kontroller. Även om objektet CatalogPartCollection är skrivskyddat kan du göra programmässiga ändringar i de underliggande kontroller som refereras i samlingen.

Konstruktorer

Name Description
CatalogPartCollection()

Initierar en ny, tom instans av CatalogPartCollection klassen.

CatalogPartCollection(CatalogPartCollection, ICollection)

Initierar en ny instans av CatalogPartCollection klassen genom att skicka in en ICollection samling befintliga CatalogPart kontroller i en zon och en ytterligare samling kontroller.

CatalogPartCollection(ICollection)

Initierar en ny instans av CatalogPartCollection klassen genom att skicka in en ICollection samling CatalogPart kontroller.

Fält

Name Description
Empty

Refererar till en statisk, skrivskyddad, tom instans av samlingen.

Egenskaper

Name Description
Count

Hämtar antalet element som finns i instansen ReadOnlyCollectionBase .

(Ärvd från ReadOnlyCollectionBase)
InnerList

Hämtar listan över element som finns i instansen ReadOnlyCollectionBase .

(Ärvd från ReadOnlyCollectionBase)
Item[Int32]

Hämtar eller anger en medlem i samlingen baserat på dess position i samlingen.

Item[String]

Returnerar en medlem i samlingen baserat på en unik strängidentifierare.

Metoder

Name Description
Contains(CatalogPart)

Returnerar ett värde som anger om det finns en viss kontroll i samlingen.

CopyTo(CatalogPart[], Int32)

Kopierar samlingen till en matris med CatalogPart objekt.

Equals(Object)

Avgör om det angivna objektet är lika med det aktuella objektet.

(Ärvd från Object)
GetEnumerator()

Returnerar en uppräkning som itererar genom instansen ReadOnlyCollectionBase .

(Ärvd från ReadOnlyCollectionBase)
GetHashCode()

Fungerar som standard-hash-funktion.

(Ärvd från Object)
GetType()

Hämtar den aktuella instansen Type .

(Ärvd från Object)
IndexOf(CatalogPart)

Returnerar positionen för en viss medlem i samlingen.

MemberwiseClone()

Skapar en ytlig kopia av den aktuella Object.

(Ärvd från Object)
ToString()

Returnerar en sträng som representerar det aktuella objektet.

(Ärvd från Object)

Explicita gränssnittsimplementeringar

Name Description
ICollection.CopyTo(Array, Int32)

Kopierar hela ReadOnlyCollectionBase till en kompatibel endimensionell Array, med början vid det angivna indexet för målmatrisen.

(Ärvd från ReadOnlyCollectionBase)
ICollection.IsSynchronized

Hämtar ett värde som anger om åtkomsten till ett ReadOnlyCollectionBase objekt synkroniseras (trådsäker).

(Ärvd från ReadOnlyCollectionBase)
ICollection.SyncRoot

Hämtar ett objekt som kan användas för att synkronisera åtkomst till ett ReadOnlyCollectionBase objekt.

(Ärvd från ReadOnlyCollectionBase)

Tilläggsmetoder

Name Description
AsParallel(IEnumerable)

Möjliggör parallellisering av en fråga.

AsQueryable(IEnumerable)

Konverterar en IEnumerable till en IQueryable.

Cast<TResult>(IEnumerable)

Omvandlar elementen i en IEnumerable till den angivna typen.

OfType<TResult>(IEnumerable)

Filtrerar elementen i en IEnumerable baserat på en angiven typ.

Gäller för

Se även