WebPartDisplayModeCollection Classe
Définition
Important
Certaines informations portent sur la préversion du produit qui est susceptible d’être en grande partie modifiée avant sa publication. Microsoft exclut toute garantie, expresse ou implicite, concernant les informations fournies ici.
Contient une collection d'objets WebPartDisplayMode. Cette classe ne peut pas être héritée.
public ref class WebPartDisplayModeCollection sealed : System::Collections::CollectionBase
public sealed class WebPartDisplayModeCollection : System.Collections.CollectionBase
type WebPartDisplayModeCollection = class
inherit CollectionBase
Public NotInheritable Class WebPartDisplayModeCollection
Inherits CollectionBase
- Héritage
Exemples
L’exemple de code suivant illustre l’utilisation de la WebPartDisplayModeCollection classe . Le point clé est que vous devez hériter de la WebPartManager classe et remplacer la CreateDisplayModes méthode pour ajouter un objet personnalisé WebPartDisplayMode à la WebPartDisplayModeCollection collection créée par le WebPartManager contrôle.
Cet exemple de code comporte cinq parties :
Contrôle utilisateur qui vous permet de modifier les modes d’affichage d’une page de composants WebPart.
Page web qui héberge les autres contrôles.
Contrôle utilisateur qui réside dans une WebPartZone zone de la page web et vous permet d’entrer et d’afficher du texte dans une étiquette.
Fichier de code source qui contient deux contrôles. L’un est un contrôle personnalisé WebPartManager ; l’autre est un objet personnalisé WebPartDisplayMode à ajouter aux modes d’affichage par défaut de la page.
Explication du fonctionnement de l’exemple.
Le code source de la première partie de l’exemple de code, le contrôle utilisateur qui vous permet de modifier les modes d’affichage, provient d’une autre rubrique. Pour que cet exemple de code fonctionne, vous devez obtenir le fichier .ascx pour le contrôle utilisateur à partir de la rubrique Procédure pas à pas : modification des modes d’affichage sur une page de composants WebPart , et placer le fichier dans le même dossier que la page .aspx dans cet exemple de code.
La deuxième partie de l’exemple est la page Web. Il contient deux WebPartZone contrôles, les deux contrôles utilisateur et le contrôle personnalisé WebPartManager . Notez les Register
directives en haut de la page pour référencer les contrôles utilisateur et l’espace de noms pour les contrôles compilés.
<%@ Page Language="C#" %>
<%@ Register Src="TextDisplaycs.ascx"
TagName="TextDisplay"
TagPrefix="uc2" %>
<%@ Register Src="DisplayModeMenuCS.ascx"
TagName="DisplayModeMenuCS"
TagPrefix="uc1" %>
<%@ Register Namespace="Samples.AspNet.CS.Controls"
TagPrefix="sample"
Assembly="CustomDisplayModeCS" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" >
<head runat="server">
<title>Untitled Page</title>
</head>
<body>
<form id="form1" runat="server">
<uc1:DisplayModeMenuCS id="menu1" runat="server" />
<div>
<sample:NewWebPartManager runat="server" ID="wpgm1" />
<br />
<table style="width: 100%">
<tr valign="top" align="center" >
<td style="width: 100px; height: 123px">
<asp:WebPartZone ID="WebPartZone1" runat="server">
<ZoneTemplate>
<uc2:TextDisplay ID="TextDisplay1" runat="server" />
</ZoneTemplate>
</asp:WebPartZone>
</td>
<td style="width: 100px; height: 123px">
<asp:WebPartZone ID="WebPartZone2" runat="server" />
</td>
</tr>
</table>
<br />
</div>
</form>
</body>
</html>
<%@ Page Language="vb" %>
<%@ Register Src="TextDisplayvb.ascx"
TagName="TextDisplay"
TagPrefix="uc2" %>
<%@ Register Src="DisplayModeMenuVB.ascx"
TagName="DisplayModeMenuVB"
TagPrefix="uc1" %>
<%@ Register Namespace="Samples.AspNet.VB.Controls"
TagPrefix="sample"
Assembly="CustomDisplayModeVB" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" >
<head runat="server">
<title>Untitled Page</title>
</head>
<body>
<form id="form1" runat="server">
<uc1:DisplayModeMenuVB id="menu1" runat="server" />
<div>
<sample:NewWebPartManager runat="server" ID="wpgm1" />
<br />
<table style="width: 100%">
<tr valign="top" align="center" >
<td style="width: 100px; height: 123px">
<asp:WebPartZone ID="WebPartZone1" runat="server">
<ZoneTemplate>
<uc2:TextDisplay ID="TextDisplay1" runat="server" />
</ZoneTemplate>
</asp:WebPartZone>
</td>
<td style="width: 100px; height: 123px">
<asp:WebPartZone ID="WebPartZone2" runat="server" />
</td>
</tr>
</table>
<br />
</div>
</form>
</body>
</html>
La troisième partie de l’exemple est le contrôle utilisateur pour la saisie et l’affichage du texte. Notez qu’il utilise un MultiView contrôle pour créer plusieurs vues de l’interface utilisateur. Une vue s’affiche avec le bouton, l’autre sans. Notez que dans la méthode remplacée OnPreRender
, le code vérifie si la page est actuellement en mode d’affichage personnalisé et, si c’est le cas, il affiche la première vue du contrôle utilisateur, qui inclut le bouton. Si la page n’est pas en mode d’affichage personnalisé (par exemple, si la page est en mode parcourir ou création), le bouton est masqué.
Important
Cet exemple comprend une zone de texte qui accepte une entrée d'utilisateur, ce qui constitue une menace potentielle pour la sécurité. Par défaut, les pages web ASP.NET vérifient que l’entrée d’utilisateur n’inclut pas de script ou d’éléments HTML. Pour plus d’informations, consultez Vue d’ensemble des attaques de script.
<%@ Control Language="C#" %>
<%@ Import Namespace="Samples.AspNet.CS.Controls" %>
<script runat="server">
private string textContent;
[Personalizable]
public string TextContent
{
get { return textContent; }
set { textContent = value; }
}
protected override void OnPreRender(EventArgs e)
{
Label1.Text = this.textContent;
int viewIndex = 0;
WebPartManager wpmg =
WebPartManager.GetCurrentWebPartManager(this.Page);
NewWebPartManager myNewWpmg = wpmg as NewWebPartManager;
if (myNewWpmg != null)
{
WebPartDisplayMode mode =
myNewWpmg.SupportedDisplayModes[myNewWpmg.InLineEditDisplayMode.Name];
if (mode != null && myNewWpmg.DisplayMode == mode)
{
viewIndex = 1;
}
}
this.MultiView1.ActiveViewIndex = viewIndex;
}
protected void Button1_Click(object sender, EventArgs e)
{
this.TextContent = TextBox1.Text;
WebPartManager wpmg =
WebPartManager.GetCurrentWebPartManager(this.Page);
WebPartDisplayMode mode =
wpmg.SupportedDisplayModes[WebPartManager.BrowseDisplayMode.Name];
if (mode != null)
wpmg.DisplayMode = mode;
}
</script>
<asp:MultiView ID="MultiView1" runat="server">
<asp:View ID="View1" runat="server">
<asp:Label ID="Label1" runat="server" Text="Label" />
</asp:View>
<asp:View ID="View2" runat="server">
<asp:TextBox ID="TextBox1" runat="server"></asp:TextBox>
<asp:Button ID="Button1" OnClick="Button1_Click"
runat="server" Text="Button" />
</asp:View>
</asp:MultiView>
<%@ Control Language="vb" %>
<%@ Import Namespace="Samples.AspNet.VB.Controls" %>
<script runat="server">
Private _textContent As String
<Personalizable()> _
Public Property TextContent() As String
Get
Return _textContent
End Get
Set(ByVal value As String)
_textContent = Value
End Set
End Property
Protected Overrides Sub OnPreRender(ByVal e As EventArgs)
Label1.Text = Me.TextContent
Dim viewIndex As Integer = 0
Dim wpmg As WebPartManager = _
WebPartManager.GetCurrentWebPartManager(Me.Page)
Dim myNewWpmg As NewWebPartManager = _
CType(wpmg, NewWebPartManager)
If Not (myNewWpmg Is Nothing) Then
Dim mode As WebPartDisplayMode = _
myNewWpmg.SupportedDisplayModes(myNewWpmg.InLineEditDisplayMode.Name)
If Not (mode Is Nothing) AndAlso _
myNewWpmg.DisplayMode Is mode Then
viewIndex = 1
End If
End If
Me.MultiView1.ActiveViewIndex = viewIndex
End Sub
Protected Sub Button1_Click(ByVal sender As Object, _
ByVal e As EventArgs)
Me.TextContent = TextBox1.Text
Dim wpmg As WebPartManager = _
WebPartManager.GetCurrentWebPartManager(Me.Page)
Dim mode As WebPartDisplayMode = _
wpmg.SupportedDisplayModes(WebPartManager.BrowseDisplayMode.Name)
If Not (mode Is Nothing) Then
wpmg.DisplayMode = mode
End If
End Sub
</script>
<asp:MultiView ID="MultiView1" runat="server">
<asp:View ID="View1" runat="server">
<asp:Label ID="Label1" runat="server" Text="Label" />
</asp:View>
<asp:View ID="View2" runat="server">
<asp:TextBox ID="TextBox1" runat="server"></asp:TextBox>
<asp:Button ID="Button1" OnClick="Button1_Click"
runat="server" Text="Button" />
</asp:View>
</asp:MultiView>
La quatrième partie de l’exemple est le fichier source pour les deux classes personnalisées. Notez que la classe personnalisée WebPartManager remplace la CreateDisplayModes méthode, appelle la méthode de base pour ajouter tous les modes d’affichage par défaut, puis ajoute le mode d’affichage personnalisé. La classe de mode d’affichage personnalisé, InLineEditDisplayMode
, hérite simplement de WebPartDisplayMode, définit le nom du mode d’affichage dans le constructeur et remplace un certain nombre des propriétés de base pour établir les caractéristiques de l’affichage personnalisé.
Pour que l’exemple de code s’exécute, vous devez compiler ce code source. Vous pouvez le compiler explicitement et placer l’assembly résultant dans le dossier Bin de votre site web ou dans le global assembly cache. Vous pouvez également placer le code source dans le dossier App_Code de votre site, où il sera compilé dynamiquement au moment de l’exécution. Pour obtenir une procédure pas à pas qui montre comment compiler, consultez Procédure pas à pas : Développement et utilisation d’un contrôle de serveur web personnalisé.
using System;
using System.Collections.Generic;
using System.Configuration;
using System.Web;
using System.Web.Security;
using System.Security.Permissions;
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 NewWebPartManager : WebPartManager
{
private static readonly WebPartDisplayMode _inLineEditDisplayMode =
new InlineWebPartEditDisplayMode();
public NewWebPartManager() {}
protected override WebPartDisplayModeCollection CreateDisplayModes()
{
WebPartDisplayModeCollection displayModes =
base.CreateDisplayModes();
displayModes.Add(_inLineEditDisplayMode);
return displayModes;
}
public WebPartDisplayMode InLineEditDisplayMode
{
get { return _inLineEditDisplayMode; }
}
private sealed class InlineWebPartEditDisplayMode : WebPartDisplayMode
{
public InlineWebPartEditDisplayMode()
: base("Inline Edit Display")
{
}
public override bool AllowPageDesign
{
get { return true; }
}
public override bool RequiresPersonalization
{
get { return true; }
}
public override bool ShowHiddenWebParts
{
get { return false; }
}
public override bool AssociatedWithToolZone
{
get { return false; }
}
public override bool IsEnabled(WebPartManager webPartManager)
{
return true;
}
}
}
}
Imports System.Collections.Generic
Imports System.Configuration
Imports System.Web
Imports System.Web.Security
Imports System.Security.Permissions
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 NewWebPartManager
Inherits WebPartManager
Private Shared _inLineEditDisplayMode As WebPartDisplayMode = _
New InlineWebPartEditDisplayMode()
Public Sub New()
End Sub
Protected Overrides Function CreateDisplayModes() As WebPartDisplayModeCollection
Dim displayModes As WebPartDisplayModeCollection = MyBase.CreateDisplayModes()
displayModes.Add(_inLineEditDisplayMode)
Return displayModes
End Function
Public ReadOnly Property InLineEditDisplayMode() As WebPartDisplayMode
Get
Return _inLineEditDisplayMode
End Get
End Property
Private NotInheritable Class InlineWebPartEditDisplayMode
Inherits WebPartDisplayMode
Public Sub New()
MyBase.New("Inline Edit Display")
End Sub
Public Overrides ReadOnly Property AllowPageDesign() As Boolean
Get
Return True
End Get
End Property
Public Overrides ReadOnly Property RequiresPersonalization() _
As Boolean
Get
Return True
End Get
End Property
Public Overrides ReadOnly Property ShowHiddenWebParts() As Boolean
Get
Return False
End Get
End Property
Public Overrides ReadOnly Property AssociatedWithToolZone() _
As Boolean
Get
Return False
End Get
End Property
Public Overrides Function IsEnabled(ByVal webPartManager _
As WebPartManager) As Boolean
Return True
End Function
End Class
End Class
End Namespace
Pour exécuter l’exemple de code, chargez la page dans un navigateur. Notez que la page est actuellement en mode navigation et qu’aucun bouton n’est visible. À l’aide du contrôle de liste déroulante Mode d’affichage , remplacez la page par Mode d’affichage d’édition inline et notez que le bouton est désormais visible dans le contrôle utilisateur inférieur. Ajoutez du texte, puis cliquez sur le bouton pour mettre à jour le contrôle. Notez que l’affichage de la page est retourné en mode de navigation, que le texte que vous avez entré est maintenant affiché et que le bouton est à nouveau masqué, car la page n’est pas en mode d’affichage personnalisé.
Remarques
La WebPartDisplayModeCollection classe est conçue pour contenir une collection d’objets WebPartDisplayMode . Il est principalement utilisé par le WebPartManager contrôle pour gérer les collections d’objets WebPartDisplayMode .
Un mode d’affichage est une vue spéciale d’une page Web qui s’affiche lorsqu’elle est affectée en tant que mode d’affichage actuel sur la WebPartManager.DisplayMode propriété. Les modes d’affichage sont utilisés dans le jeu de contrôle Composants WebPart pour créer des affichages de page dans lesquels les utilisateurs peuvent effectuer des tâches spéciales, telles que la modification de contrôles ou la réorganisation de la mise en page d’une page. Le WebPartManager contrôle définit plusieurs modes d’affichage, notamment BrowseDisplayMode, DesignDisplayMode, EditDisplayMode, CatalogDisplayModeet ConnectDisplayMode. La collection de modes d’affichage est référencée par la WebPartManager.DisplayModes propriété .
Sur une page Web particulière qui utilise des contrôles de composants WebPart, seuls certains modes d’affichage sont disponibles. Le mode de navigation par défaut et le mode création sont presque toujours disponibles, mais les autres modes d’affichage ne sont disponibles que si leurs types de zone correspondants sont présents sur la page. Pour plus d’informations, consultez la vue d’ensemble de la WebPartDisplayMode classe.
Le WebPartManager contrôle effectue le suivi des modes d’affichage disponibles sur une page avec sa SupportedDisplayModes propriété. Cette propriété fait référence à un WebPartDisplayModeCollection objet qui contient tous les modes d’affichage pris en charge.
La WebPartDisplayModeCollection classe n’ayant pas de constructeur exposé, vous ne pouvez pas créer votre propre instance de celle-ci. Si vous créez un objet personnalisé WebPartDisplayMode et souhaitez qu’il fait partie de la collection des modes d’affichage pris en charge dans le WebPartManager contrôle, vous devez hériter de la WebPartManager classe, remplacer la CreateDisplayModes méthode, appeler la méthode de base pour créer la collection, puis ajouter tous les modes d’affichage personnalisés à la collection à l’aide de sa Add méthode.
La WebPartDisplayModeCollection classe a deux propriétés publiques. La IsReadOnly propriété est une propriété en lecture seule qui indique si la collection est en lecture seule. La propriété surchargée Item[] permet d’accéder aux membres de la collection.
La WebPartDisplayModeCollection classe a également plusieurs méthodes. La Add méthode, déjà mentionnée, vous permet d’ajouter WebPartDisplayMode des objets à la collection. La Contains méthode détermine si un mode d’affichage particulier existe dans la collection. La CopyTo méthode copie la collection dans un tableau d’objets. La IndexOf méthode retourne l’index d’un mode d’affichage particulier dans la collection. Enfin, la Insert méthode vous permet d’insérer un objet en mode d’affichage à un index particulier dans la collection.
Propriétés
Capacity |
Obtient ou définit le nombre d'éléments que CollectionBase peut contenir. (Hérité de CollectionBase) |
Count |
Obtient le nombre d'éléments contenus dans l'instance CollectionBase. Cette propriété ne peut pas être remplacée. (Hérité de CollectionBase) |
InnerList |
Obtient ArrayList contenant la liste des éléments dans l'instance de CollectionBase. (Hérité de CollectionBase) |
IsReadOnly |
Obtient une valeur indiquant si la collection est en lecture seule. |
Item[Int32] |
Obtient un membre spécifique de la collection d'après son index. |
Item[String] |
Obtient un membre spécifique de la collection d'après un identificateur unique. |
List |
Obtient IList contenant la liste des éléments dans l'instance de CollectionBase. (Hérité de CollectionBase) |
Méthodes
Add(WebPartDisplayMode) |
Ajoute un objet WebPartDisplayMode à la collection. |
Clear() |
Supprime tous les objets de l'instance de CollectionBase. Cette méthode ne peut pas être substituée. (Hérité de CollectionBase) |
Contains(WebPartDisplayMode) |
Retourne une valeur indiquant si un objet WebPartDisplayMode particulier existe dans la collection. |
CopyTo(WebPartDisplayMode[], Int32) |
Copie la collection dans un tableau d'objets WebPartDisplayMode. |
Equals(Object) |
Détermine si l'objet spécifié est égal à l'objet actuel. (Hérité de Object) |
GetEnumerator() |
Retourne un énumérateur qui itère au sein de l'instance CollectionBase. (Hérité de CollectionBase) |
GetHashCode() |
Fait office de fonction de hachage par défaut. (Hérité de Object) |
GetType() |
Obtient le Type de l'instance actuelle. (Hérité de Object) |
IndexOf(WebPartDisplayMode) |
Retourne la position d'un membre particulier de la collection. |
Insert(Int32, WebPartDisplayMode) |
Insère un objet WebPartDisplayMode dans la collection à la position d'index spécifiée. |
MemberwiseClone() |
Crée une copie superficielle du Object actuel. (Hérité de Object) |
OnClear() |
Effectue des traitements personnalisés supplémentaires pendant l’effacement du contenu de l’instance de CollectionBase. (Hérité de CollectionBase) |
OnClearComplete() |
Exécute des processus personnalisés supplémentaires après l'effacement du contenu de l'instance de CollectionBase. (Hérité de CollectionBase) |
OnInsert(Int32, Object) |
Exécute les processus personnalisés supplémentaires avant l'insertion d'un nouvel élément dans l'instance de CollectionBase. (Hérité de CollectionBase) |
OnInsertComplete(Int32, Object) |
Exécute les processus personnalisés supplémentaires après l'insertion d'un nouvel élément dans l'instance de CollectionBase. (Hérité de CollectionBase) |
OnRemove(Int32, Object) |
Exécute des processus personnalisés supplémentaires lors de la suppression d'un élément de l'instance de CollectionBase. (Hérité de CollectionBase) |
OnRemoveComplete(Int32, Object) |
Exécute des processus personnalisés supplémentaires après la suppression d'un élément de l'instance de CollectionBase. (Hérité de CollectionBase) |
OnSet(Int32, Object, Object) |
Exécute des processus personnalisés supplémentaires avant la définition d'une valeur dans l'instance de CollectionBase. (Hérité de CollectionBase) |
OnSetComplete(Int32, Object, Object) |
Exécute des processus personnalisés supplémentaires après la définition d'une valeur dans l'instance de CollectionBase. (Hérité de CollectionBase) |
OnValidate(Object) |
Exécute des processus personnalisés supplémentaires lors de la validation d'une valeur. (Hérité de CollectionBase) |
RemoveAt(Int32) |
Supprime l'élément à l'index spécifié de l'instance de CollectionBase. Cette méthode n'est pas substituable. (Hérité de CollectionBase) |
ToString() |
Retourne une chaîne qui représente l'objet actuel. (Hérité de Object) |
Implémentations d’interfaces explicites
ICollection.CopyTo(Array, Int32) |
Copie l'ensemble de l'objet CollectionBase vers un objet Array unidimensionnel compatible, en commençant à l'index spécifié du tableau cible. (Hérité de CollectionBase) |
ICollection.IsSynchronized |
Obtient une valeur indiquant si l’accès à CollectionBase est synchronisé (thread-safe). (Hérité de CollectionBase) |
ICollection.SyncRoot |
Obtient un objet qui peut être utilisé pour synchroniser l’accès à CollectionBase. (Hérité de CollectionBase) |
IList.Add(Object) |
Ajoute un objet à la fin de la CollectionBase. (Hérité de CollectionBase) |
IList.Contains(Object) |
Détermine si CollectionBase contient un élément spécifique. (Hérité de CollectionBase) |
IList.IndexOf(Object) |
Recherche le Object spécifié et retourne l’index de base zéro de la première occurrence dans l’ensemble du CollectionBase. (Hérité de CollectionBase) |
IList.Insert(Int32, Object) |
Insère un élément dans la classe CollectionBase au niveau de l'index spécifié. (Hérité de CollectionBase) |
IList.IsFixedSize |
Obtient une valeur indiquant si CollectionBase est de taille fixe. (Hérité de CollectionBase) |
IList.IsReadOnly |
Obtient une valeur indiquant si CollectionBase est en lecture seule. (Hérité de CollectionBase) |
IList.Item[Int32] |
Obtient ou définit l'élément au niveau de l'index spécifié. (Hérité de CollectionBase) |
IList.Remove(Object) |
Supprime la première occurrence d’un objet spécifique de CollectionBase. (Hérité de CollectionBase) |
Méthodes d’extension
Cast<TResult>(IEnumerable) |
Effectue un cast des éléments d'un IEnumerable vers le type spécifié. |
OfType<TResult>(IEnumerable) |
Filtre les éléments d'un IEnumerable en fonction du type spécifié. |
AsParallel(IEnumerable) |
Active la parallélisation d'une requête. |
AsQueryable(IEnumerable) |
Convertit un IEnumerable en IQueryable. |