WebPartDisplayModeCollection Klass

Definition

Innehåller en samling WebPartDisplayMode objekt. Det går inte att ärva den här klassen.

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

Exempel

Följande kodexempel visar hur du WebPartDisplayModeCollection arbetar med klassen. Nyckelpunkten är att du måste ärva från WebPartManager klassen och åsidosätta CreateDisplayModes metoden för att lägga till ett anpassat WebPartDisplayMode objekt i samlingen WebPartDisplayModeCollection som skapats av WebPartManager kontrollen.

Det här kodexemplet innehåller fem delar:

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

  • En webbsida som är värd för de andra kontrollerna.

  • En användarkontroll som finns i en WebPartZone zon på webbsidan och gör att du kan ange och visa text i en etikett.

  • En källkodsfil som innehåller två kontroller. Den ena är en anpassad WebPartManager kontroll. Den andra är ett anpassat WebPartDisplayMode objekt som ska läggas till i sidans standardvisningslägen.

  • En förklaring av hur exemplet fungerar.

Källkoden för den första delen av kodexemplet, användarkontrollen som låter dig ändra visningslägen, 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 exemplet är webbsidan. Den innehåller två WebPartZone kontroller, både användarkontroller och den anpassade WebPartManager kontrollen. Observera direktiven Register överst på sidan för att referera till användarkontrollerna och namnområdet för de kompilerade kontrollerna.

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

Den tredje delen av exemplet är användarkontrollen för att ange och visa text. Observera att den använder en MultiView kontroll för att skapa flera vyer av användargränssnittet (UI). En vy visas med knappen, den andra utan. Observera att i den åsidosatta OnPreRender metoden kontrollerar koden om sidan för närvarande är i anpassat visningsläge, och i så fall visar den den första vyn av användarkontrollen, som innehåller knappen. Om sidan inte är i anpassat visningsläge (till exempel om sidan är i bläddra- eller designläge) är knappen dold.

Important

Det här exemplet har en textruta som accepterar användarindata, vilket är ett potentiellt säkerhetshot. Som standard kontrollerar ASP.NET webbsidor att användarindata inte innehåller skript- eller HTML-element. Mer information finns i Översikt över skriptexploateringar.

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

Den fjärde delen av exemplet är källfilen för de två anpassade klasserna. Observera att den anpassade WebPartManager klassen åsidosätter metoden, anropar CreateDisplayModes basmetoden för att lägga till alla standardvisningslägen och lägger sedan till det anpassade visningsläget. Klassen för anpassat visningsläge, InLineEditDisplayMode, ärver helt enkelt från WebPartDisplayMode, anger namnet på visningsläget i konstruktorn och åsidosätter ett antal av basegenskaperna för att fastställa egenskaperna för den anpassade visningen.

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 hur du kompilerar finns i Genomgång: Utveckla och använda en anpassad webbserverkontroll.

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

Om du vill köra kodexemplet läser du in sidan i en webbläsare. Observera att sidan för närvarande är i bläddra-läge och att ingen knapp visas. Med listrutan Visningsläge ändrar du sidan till Visningsläge för infogad redigering och ser att knappen nu visas i den lägre användarkontrollen. Lägg till text och klicka på knappen för att uppdatera kontrollen. Observera att sidvisningen återgår till bläddra-läget, att texten som du angav nu visas och att knappen återigen är dold eftersom sidan inte är i anpassat visningsläge.

Kommentarer

Klassen WebPartDisplayModeCollection är utformad för att innehålla en samling WebPartDisplayMode objekt. Den används främst av WebPartManager kontrollen för att hantera samlingar av WebPartDisplayMode objekt.

Ett visningsläge är en särskild vy av en webbsida som visas när den tilldelas som aktuellt visningsläge på WebPartManager.DisplayMode egenskapen. Visningslägen används i kontrolluppsättningen Webbdelar för att skapa sidvyer där användare kan utföra särskilda uppgifter, till exempel redigeringskontroller eller ordna om layouten för en sida. Kontrollen WebPartManager definierar flera visningslägen, inklusive BrowseDisplayMode, DesignDisplayMode, EditDisplayMode, CatalogDisplayModeoch ConnectDisplayMode. Samlingen med visningslägen refereras av egenskapen WebPartManager.DisplayModes .

På en viss webbsida som använder webbdelskontroller är endast vissa visningslägen tillgängliga. Standardläget för bläddra och designläget är nästan alltid tillgängligt, men de andra visningslägena är endast tillgängliga om motsvarande zontyper finns på sidan. Mer information finns i klassöversikten WebPartDisplayMode .

Kontrollen WebPartManager håller reda på tillgängliga visningslägen på en sida med dess SupportedDisplayModes egenskap. Den här egenskapen refererar till ett WebPartDisplayModeCollection objekt som innehåller alla visningslägen som stöds.

Klassen WebPartDisplayModeCollection har ingen exponerad konstruktor, så du kan inte skapa en egen ny instans av den. Om du skapar ett anpassat WebPartDisplayMode objekt och vill att det ska ingå i samlingen med visningslägen som stöds i WebPartManager kontrollen måste du ärva från WebPartManager klassen, åsidosätta CreateDisplayModes metoden, anropa basmetoden för att skapa samlingen och sedan lägga till anpassade visningslägen i samlingen med hjälp av dess Add metod.

Klassen WebPartDisplayModeCollection har två offentliga egenskaper. Egenskapen IsReadOnly är en skrivskyddad egenskap som anger om samlingen är skrivskyddad. Den överlagrade Item[] egenskapen ger åtkomst till medlemmarna i samlingen.

Klassen WebPartDisplayModeCollection har också flera metoder. Med Add metoden, som redan nämnts, kan du lägga WebPartDisplayMode till objekt i samlingen. Metoden Contains avgör om det finns ett visst visningsläge i samlingen. Metoden CopyTo kopierar samlingen till en matris med objekt. Metoden IndexOf returnerar indexet för ett visst visningsläge i samlingen. Slutligen Insert kan du med metoden infoga ett visningslägesobjekt vid ett visst index i samlingen.

Egenskaper

Name Description
Capacity

Hämtar eller anger antalet element som CollectionBase kan innehålla.

(Ärvd från CollectionBase)
Count

Hämtar antalet element som finns i instansen CollectionBase . Den här egenskapen kan inte åsidosättas.

(Ärvd från CollectionBase)
InnerList

Hämtar en ArrayList lista med element i instansen CollectionBase .

(Ärvd från CollectionBase)
IsReadOnly

Hämtar ett värde som anger om samlingen är skrivskyddad.

Item[Int32]

Hämtar en specifik medlem i samlingen enligt dess index.

Item[String]

Hämtar en specifik medlem i samlingen enligt en unik identifierare.

List

Hämtar en IList lista med element i instansen CollectionBase .

(Ärvd från CollectionBase)

Metoder

Name Description
Add(WebPartDisplayMode)

Lägger till ett WebPartDisplayMode objekt i samlingen.

Clear()

Tar bort alla objekt från instansen CollectionBase . Den här metoden kan inte åsidosättas.

(Ärvd från CollectionBase)
Contains(WebPartDisplayMode)

Returnerar ett värde som anger om ett visst WebPartDisplayMode objekt finns i samlingen.

CopyTo(WebPartDisplayMode[], Int32)

Kopierar samlingen till en matris med WebPartDisplayMode 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 CollectionBase .

(Ärvd från CollectionBase)
GetHashCode()

Fungerar som standard-hash-funktion.

(Ärvd från Object)
GetType()

Hämtar den aktuella instansen Type .

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

Returnerar positionen för en viss medlem i samlingen.

Insert(Int32, WebPartDisplayMode)

Infogar ett WebPartDisplayMode objekt i samlingen vid den angivna indexpositionen.

MemberwiseClone()

Skapar en ytlig kopia av den aktuella Object.

(Ärvd från Object)
OnClear()

Utför ytterligare anpassade processer när du rensar innehållet i instansen CollectionBase .

(Ärvd från CollectionBase)
OnClearComplete()

Utför ytterligare anpassade processer när innehållet i instansen har rensats CollectionBase .

(Ärvd från CollectionBase)
OnInsert(Int32, Object)

Utför ytterligare anpassade processer innan du infogar ett nytt element i instansen CollectionBase .

(Ärvd från CollectionBase)
OnInsertComplete(Int32, Object)

Utför ytterligare anpassade processer när du har infogat ett nytt element i instansen CollectionBase .

(Ärvd från CollectionBase)
OnRemove(Int32, Object)

Utför ytterligare anpassade processer när du tar bort ett element från instansen CollectionBase .

(Ärvd från CollectionBase)
OnRemoveComplete(Int32, Object)

Utför ytterligare anpassade processer när du har tagit bort ett element från instansen CollectionBase .

(Ärvd från CollectionBase)
OnSet(Int32, Object, Object)

Utför ytterligare anpassade processer innan du anger ett värde i instansen CollectionBase .

(Ärvd från CollectionBase)
OnSetComplete(Int32, Object, Object)

Utför ytterligare anpassade processer när du har angett ett värde i instansen CollectionBase .

(Ärvd från CollectionBase)
OnValidate(Object)

Utför ytterligare anpassade processer när du verifierar ett värde.

(Ärvd från CollectionBase)
RemoveAt(Int32)

Tar bort elementet vid det angivna indexet för instansen CollectionBase . Den här metoden kan inte åsidosättas.

(Ärvd från CollectionBase)
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 CollectionBase till en kompatibel endimensionell Array, med början vid det angivna indexet för målmatrisen.

(Ärvd från CollectionBase)
ICollection.IsSynchronized

Hämtar ett värde som anger om åtkomsten CollectionBase till är synkroniserad (trådsäker).

(Ärvd från CollectionBase)
ICollection.SyncRoot

Hämtar ett objekt som kan användas för att synkronisera åtkomsten CollectionBasetill .

(Ärvd från CollectionBase)
IList.Add(Object)

Lägger till ett objekt i slutet av CollectionBase.

(Ärvd från CollectionBase)
IList.Contains(Object)

Avgör om innehåller CollectionBase ett specifikt element.

(Ärvd från CollectionBase)
IList.IndexOf(Object)

Söker efter den angivna Object och returnerar det nollbaserade indexet för den första förekomsten i hela CollectionBase.

(Ärvd från CollectionBase)
IList.Insert(Int32, Object)

Infogar ett element i CollectionBase det angivna indexet.

(Ärvd från CollectionBase)
IList.IsFixedSize

Hämtar ett värde som anger om har CollectionBase en fast storlek.

(Ärvd från CollectionBase)
IList.IsReadOnly

Hämtar ett värde som anger om är CollectionBase skrivskyddat.

(Ärvd från CollectionBase)
IList.Item[Int32]

Hämtar eller anger elementet vid det angivna indexet.

(Ärvd från CollectionBase)
IList.Remove(Object)

Tar bort den första förekomsten av ett specifikt objekt från CollectionBase.

(Ärvd från CollectionBase)

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