Bagikan melalui


CatalogPartCollection Kelas

Definisi

Berisi kumpulan CatalogPart kontrol yang digunakan untuk menyediakan katalog kontrol server Web yang bisa ditambahkan pengguna akhir ke halaman Web. Kelas ini tidak dapat diwariskan.

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

Contoh

Contoh kode berikut menunjukkan beberapa kegunaan CatalogPartCollection kelas . Ada empat bagian untuk contoh kode ini:

  • Kontrol pengguna yang memungkinkan Anda mengubah mode tampilan pada halaman Bagian Web.

  • Kelas untuk kontrol kustom WebPart bernama TextDisplayWebPart, yang direferensikan di halaman Web dan terkandung dalam salah CatalogPart satu kontrol.

  • Halaman Web yang mereferensikan TextDisplayWebPart kontrol, berisi CatalogZone kontrol dengan dua CatalogPart kontrol dari set kontrol Bagian Web yang dideklarasikan di zona tersebut, dan berisi kode berbasis peristiwa untuk membuat dan memanipulasi CatalogPartCollection objek.

  • Penjelasan tentang cara kerja contoh kode saat Anda memuatnya di browser.

Bagian pertama dari contoh kode adalah kontrol pengguna. Kode sumber untuk kontrol pengguna berasal dari topik lain. Agar contoh kode ini berfungsi, Anda perlu mendapatkan file .ascx untuk kontrol pengguna dari Panduan: Mengubah Mode Tampilan pada topik Halaman Bagian Web , dan menempatkan file di folder yang sama dengan halaman .aspx dalam contoh kode ini.

Bagian kedua dari contoh kode adalah TextDisplayWebPart kontrol. Agar contoh kode berjalan, Anda harus mengkompilasi kode sumber ini. Anda dapat mengkompilasinya secara eksplisit dan menempatkan rakitan yang dihasilkan di folder Bin situs Web Anda atau singgahan perakitan global. Atau, Anda dapat meletakkan kode sumber di folder App_Code situs Anda, tempat kode tersebut akan dikompilasi secara dinamis pada durasi. Untuk panduan yang menunjukkan kedua metode kompilasi, lihat Panduan: Mengembangkan dan Menggunakan Kontrol Server Web Kustom. Perhatikan bahwa kontrol memiliki properti bernama ContentText; properti ini menyimpan nilai yang dimasukkan pengguna dalam kotak teks.

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

Bagian ketiga dari contoh kode adalah halaman Web. Perhatikan bahwa <asp:catalogzone> elemen untuk halaman berisi deklarasi untuk dua CatalogPart kontrol. Kontrol ini menjadi bagian dari objek kustom CatalogPartCollection yang dibuat saat Button1_Click metode dijalankan. Kontrol PageCatalogPart berisi kontrol server Web yang sebelumnya telah ditutup oleh pengguna pada durasi. Kontrol dalam PageCatalogPart kontrol dapat ditambahkan kembali ke halaman. DeclarativeCatalogPart Kontrol berisi deklarasi kontrol kustomTextDisplayWebPart. Saat halaman dalam mode katalog, pengguna dapat menambahkan TextDisplayWebPart kontrol ke halaman sehingga dapat digunakan dalam mode penjelajahan normal.

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

Saat memuat halaman di browser, Anda dapat mengalihkan halaman ke mode katalog dengan memilih Katalog di kontrol daftar drop-down Mode Tampilan . Anda bisa menambahkan kontrol kustom WebPart ke halaman dengan memilih kotak centang di sampingnya dan mengklik Tambahkan. Klik Tutup untuk mengembalikan halaman untuk menelusuri mode. Pada kontrol yang baru saja Anda tambahkan, jika Anda mengklik menu kata kerja (panah bawah yang muncul di bilah judul) lalu klik Tutup, kontrol dihapus dari halaman dan ditambahkan ke PageCatalogPart kontrol. Kembalikan halaman ke mode katalog, dan klik tautan Katalog Halaman untuk menampilkan konten PageCatalogPart kontrol. Perhatikan bahwa kontrol yang Anda tutup sekarang muncul di sana. Mengklik tombol Tampilkan Properti Bagian Katalog mengakses CatalogPartCollection objek dan menampilkan properti tertentu dari kontrol yang terkandung CatalogPart .

Keterangan

Kelas CatalogPartCollection adalah kumpulan CatalogPart kontrol baca-saja, biasanya digunakan oleh CatalogZoneBase zona untuk melacak serangkaian CatalogPart kontrol yang terkandung oleh zona.

Ketika halaman Bagian Web memasuki mode katalog, zona membuat objek baru CatalogPartCollection yang terdiri dari CatalogPart kontrol. Setiap CatalogPart kontrol dalam koleksi dapat berisi referensi ke nol atau lebih kontrol server Web, yang ditampilkan dalam bentuk katalog kontrol server yang tersedia.

Anda dapat membuat CatalogPartCollection kumpulan kontrol untuk penggunaan terprogram Anda sendiri jika, misalnya, Anda perlu melakukan beberapa operasi massal pada serangkaian CatalogPart kontrol. Meskipun CatalogPartCollection objek bersifat baca-saja, Anda dapat membuat perubahan terprogram pada kontrol dasar yang dirujuk dalam koleksi.

Konstruktor

CatalogPartCollection()

Menginisialisasi instans kelas baru yang CatalogPartCollection kosong.

CatalogPartCollection(CatalogPartCollection, ICollection)

Menginisialisasi instans CatalogPartCollection baru kelas dengan meneruskan ICollection koleksi kontrol yang ada CatalogPart di zona, dan kumpulan kontrol tambahan.

CatalogPartCollection(ICollection)

Menginisialisasi instans CatalogPartCollection baru kelas dengan meneruskan ICollection kumpulan CatalogPart kontrol.

Bidang

Empty

Mereferensikan instans koleksi statis, baca-saja, dan kosong.

Properti

Count

Mendapatkan jumlah elemen yang terkandung dalam ReadOnlyCollectionBase instans.

(Diperoleh dari ReadOnlyCollectionBase)
InnerList

Mendapatkan daftar elemen yang terkandung dalam ReadOnlyCollectionBase instans.

(Diperoleh dari ReadOnlyCollectionBase)
Item[Int32]

Mendapatkan atau menetapkan anggota koleksi, berdasarkan posisinya dalam koleksi.

Item[String]

Mengembalikan anggota koleksi berdasarkan pengidentifikasi string unik.

Metode

Contains(CatalogPart)

Mengembalikan nilai yang menunjukkan apakah kontrol tertentu ada dalam koleksi.

CopyTo(CatalogPart[], Int32)

Menyalin koleksi ke array CatalogPart objek.

Equals(Object)

Menentukan apakah objek yang ditentukan sama dengan objek saat ini.

(Diperoleh dari Object)
GetEnumerator()

Mengembalikan enumerator yang berulang melalui ReadOnlyCollectionBase instans.

(Diperoleh dari ReadOnlyCollectionBase)
GetHashCode()

Berfungsi sebagai fungsi hash default.

(Diperoleh dari Object)
GetType()

Mendapatkan dari instans Type saat ini.

(Diperoleh dari Object)
IndexOf(CatalogPart)

Mengembalikan posisi anggota koleksi tertentu.

MemberwiseClone()

Membuat salinan dangkal dari saat ini Object.

(Diperoleh dari Object)
ToString()

Mengembalikan string yang mewakili objek saat ini.

(Diperoleh dari Object)

Implementasi Antarmuka Eksplisit

ICollection.CopyTo(Array, Int32)

Menyalin seluruh ReadOnlyCollectionBase ke satu dimensi Arrayyang kompatibel, dimulai dari indeks array target yang ditentukan.

(Diperoleh dari ReadOnlyCollectionBase)
ICollection.IsSynchronized

Mendapatkan nilai yang menunjukkan apakah akses ke ReadOnlyCollectionBase objek disinkronkan (utas aman).

(Diperoleh dari ReadOnlyCollectionBase)
ICollection.SyncRoot

Mendapatkan objek yang dapat digunakan untuk menyinkronkan akses ke ReadOnlyCollectionBase objek.

(Diperoleh dari ReadOnlyCollectionBase)

Metode Ekstensi

Cast<TResult>(IEnumerable)

Mentransmisikan elemen dari ke IEnumerable jenis yang ditentukan.

OfType<TResult>(IEnumerable)

Memfilter elemen berdasarkan IEnumerable jenis yang ditentukan.

AsParallel(IEnumerable)

Mengaktifkan paralelisasi kueri.

AsQueryable(IEnumerable)

Mengonversi menjadi IEnumerableIQueryable.

Berlaku untuk

Lihat juga