WebPartDisplayModeCollection Classe

Définition

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
WebPartDisplayModeCollection

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 sur 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 de 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 permettant d’entrer et d’afficher 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 navigation 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 de 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 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 des collections d’objets WebPartDisplayMode .

Un mode d’affichage est une vue spéciale d’une page Web qui s’affiche quand 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 l’ensemble de contrôles 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 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 sont disponibles uniquement si leurs types de zone correspondants sont présents sur la page. Pour plus d’informations, consultez 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 des 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 de 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.

S’applique à

Voir aussi