CatalogPartCollection Класс
Определение
Важно!
Некоторые сведения относятся к предварительной версии продукта, в которую до выпуска могут быть внесены существенные изменения. Майкрософт не предоставляет никаких гарантий, явных или подразумеваемых, относительно приведенных здесь сведений.
Содержит коллекцию элементов управления CatalogPart, используемых для предоставления каталогов серверных веб-элементов управления, которые конечные пользователи могут добавлять на веб-страницу. Этот класс не наследуется.
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
- Наследование
Примеры
В следующем примере кода демонстрируется несколько вариантов CatalogPartCollection использования класса . Этот пример кода имеет четыре части:
Пользовательский элемент управления, позволяющий изменять режимы отображения на странице веб-частей.
Класс для пользовательского WebPart элемента управления с именем
TextDisplayWebPart
, на который ссылается веб-страница и содержится в одном из CatalogPart элементов управления.Веб-страница, которая ссылается на
TextDisplayWebPart
элемент управления, содержит CatalogZone элемент управления с двумя элементами CatalogPart управления из набора элементов управления веб-частей, объявленного в зоне, и содержит управляемый событиями код для создания объекта и управления CatalogPartCollection им.Описание того, как работает пример кода при его загрузке в браузере.
Первая часть примера кода — это пользовательский элемент управления. Исходный код для пользовательского элемента управления поступает из другого раздела. Чтобы этот пример кода работал, необходимо получить ASCX-файл для пользовательского элемента управления из раздела Walkthrough: Changing Display Modes on a Web Parts Page (Пошаговое руководство: изменение режимов отображения на странице веб-частей ) и поместить файл в ту же папку, что и страница .aspx в этом примере кода.
Вторая часть примера кода — это TextDisplayWebPart
элемент управления . Для выполнения примера кода необходимо скомпилировать этот исходный код. Ее можно скомпилировать явным образом и поместить полученную сборку в папку Bin веб-сайта или глобальный кэш сборок. Кроме того, исходный код можно поместить в папку App_Code сайта, где он будет динамически компилироваться во время выполнения. Пошаговое руководство, демонстрирующее оба метода компиляции, см. в разделе Пошаговое руководство. Разработка и использование пользовательского серверного веб-элемента управления. Обратите внимание, что элемент управления имеет свойство с именем ContentText
; это свойство содержит значение, введенное пользователем в текстовое поле.
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
Третья часть примера кода — веб-страница. Обратите внимание, что <asp:catalogzone>
элемент страницы содержит объявления для двух CatalogPart элементов управления. Эти элементы управления становятся частью пользовательского CatalogPartCollection объекта, который создается при выполнении Button1_Click
метода . Элемент PageCatalogPart управления содержит элементы управления веб-сервера, которые были ранее закрыты пользователем во время выполнения. Элементы управления в элементе PageCatalogPart управления можно добавить обратно на страницу. Элемент DeclarativeCatalogPart управления содержит объявление пользовательского TextDisplayWebPart
элемента управления. Когда страница находится в режиме каталога, пользователь может добавить TextDisplayWebPart
элемент управления на страницу, чтобы его можно было использовать в обычном режиме просмотра.
<%@ 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>
При загрузке страницы в браузере можно переключить страницу в режим каталога, выбрав Каталог в раскрывающемся списке Режим отображения . Вы можете добавить пользовательский WebPart элемент управления на страницу, установив флажок рядом с ним и нажав кнопку Добавить. Нажмите кнопку Закрыть , чтобы вернуть страницу в режим просмотра. Если щелкнуть меню команд (стрелку вниз в заголовке окна) в только что добавленном элементе управления и нажать кнопку Закрыть, элемент управления удаляется со страницы и добавляется в PageCatalogPart элемент управления. Верните страницу в режим каталога и щелкните ссылку Каталог страниц , чтобы просмотреть содержимое PageCatalogPart элемента управления. Обратите внимание, что элемент управления, который вы закрыли, теперь отображается там. Нажатие кнопки Display CatalogPart Properties позволяет получить доступ к объекту CatalogPartCollection и отобразить определенные свойства содержащихся CatalogPart элементов управления.
Комментарии
Класс CatalogPartCollection — это доступная только для чтения коллекция CatalogPart элементов управления, обычно используемая CatalogZoneBase зоной для отслеживания CatalogPart набора элементов управления, содержащихся в зоне.
Когда страница веб-частей переходит в режим каталога, зона создает новый CatalogPartCollection объект, состоящий из CatalogPart элементов управления . Каждый CatalogPart элемент управления в коллекции может содержать ссылки на ноль или несколько элементов управления веб-сервера, которые отображаются в виде каталога доступных серверных элементов управления.
Можно создать CatalogPartCollection коллекцию элементов управления для собственного программного использования, если, например, необходимо выполнить массовую операцию с набором CatalogPart элементов управления. Несмотря на CatalogPartCollection то, что объект доступен только для чтения, можно вносить программные изменения в базовые элементы управления, на которые ссылается коллекция.
Конструкторы
CatalogPartCollection() |
Инициализирует новый пустой экземпляр класса CatalogPartCollection. |
CatalogPartCollection(CatalogPartCollection, ICollection) |
Инициализирует новый экземпляр класса CatalogPartCollection, передавая коллекцию ICollection элементов управления CatalogPart, существующих в зоне, и дополнительную коллекцию элементов управления. |
CatalogPartCollection(ICollection) |
Инициализирует новый экземпляр класса CatalogPartCollection, передавая в него коллекцию ICollection элементов управления CatalogPart. |
Поля
Empty |
Ссылается на статический, пустой и доступный только для чтения экземпляр коллекции. |
Свойства
Count |
Возвращает количество элементов, содержащихся в экземпляре ReadOnlyCollectionBase. (Унаследовано от ReadOnlyCollectionBase) |
InnerList |
Получает список элементов, содержащихся в экземпляре ReadOnlyCollectionBase. (Унаследовано от ReadOnlyCollectionBase) |
Item[Int32] |
Получает или задает элемент коллекции по его позиции в коллекции. |
Item[String] |
Возвращает элемент коллекции по уникальному строковому идентификатору. |
Методы
Contains(CatalogPart) |
Возвращает значение, показывающее, существует ли конкретный элемент управления в коллекции. |
CopyTo(CatalogPart[], Int32) |
Копирует коллекцию в массив объектов CatalogPart. |
Equals(Object) |
Определяет, равен ли указанный объект текущему объекту. (Унаследовано от Object) |
GetEnumerator() |
Возвращает перечислитель, перебирающий элементы экземпляра класса ReadOnlyCollectionBase. (Унаследовано от ReadOnlyCollectionBase) |
GetHashCode() |
Служит хэш-функцией по умолчанию. (Унаследовано от Object) |
GetType() |
Возвращает объект Type для текущего экземпляра. (Унаследовано от Object) |
IndexOf(CatalogPart) |
Возвращает позицию конкретного элемента коллекции. |
MemberwiseClone() |
Создает неполную копию текущего объекта Object. (Унаследовано от Object) |
ToString() |
Возвращает строку, представляющую текущий объект. (Унаследовано от Object) |
Явные реализации интерфейса
ICollection.CopyTo(Array, Int32) |
Копирует целый массив ReadOnlyCollectionBase в совместимый одномерный массив Array, начиная с заданного индекса целевого массива. (Унаследовано от ReadOnlyCollectionBase) |
ICollection.IsSynchronized |
Возвращает значение, указывающее на то, является ли доступ к объекту ReadOnlyCollectionBase синхронизированным (потокобезопасным). (Унаследовано от ReadOnlyCollectionBase) |
ICollection.SyncRoot |
Получает объект, который позволяет синхронизировать доступ к объекту ReadOnlyCollectionBase. (Унаследовано от ReadOnlyCollectionBase) |
Методы расширения
Cast<TResult>(IEnumerable) |
Приводит элементы объекта IEnumerable к заданному типу. |
OfType<TResult>(IEnumerable) |
Выполняет фильтрацию элементов объекта IEnumerable по заданному типу. |
AsParallel(IEnumerable) |
Позволяет осуществлять параллельный запрос. |
AsQueryable(IEnumerable) |
Преобразовывает коллекцию IEnumerable в объект IQueryable. |