Sdílet prostřednictvím


WebPartDisplayModeCollection Třída

Definice

Obsahuje kolekci WebPartDisplayMode objektů. Tato třída se nemůže dědit.

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
Dědičnost
WebPartDisplayModeCollection

Příklady

Následující příklad kódu ukazuje práci s WebPartDisplayModeCollection třídou. Klíčovým bodem je, že musíte dědit z WebPartManager třídy a přepsat metodu CreateDisplayModes pro přidání vlastního WebPartDisplayMode objektu WebPartDisplayModeCollection do kolekce vytvořené ovládacím WebPartManager prvku.

Tento příklad kódu má pět částí:

  • Uživatelský ovládací prvek, který umožňuje měnit režimy zobrazení na stránce webových částí.

  • Webová stránka, která je hostitelem ostatních ovládacích prvků.

  • Uživatelský ovládací prvek, který se nachází v WebPartZone zóně na webové stránce a umožňuje zadat a zobrazit text v popisku.

  • Soubor zdrojového kódu, který obsahuje dva ovládací prvky. Jeden je vlastní WebPartManager ovládací prvek; druhý je vlastní WebPartDisplayMode objekt, který se přidá do výchozích režimů zobrazení stránky.

  • Vysvětlení fungování příkladu

Zdrojový kód pro první část příkladu kódu, uživatelský ovládací prvek, který umožňuje měnit režimy zobrazení, pochází z jiného tématu. Aby tento příklad kódu fungoval, musíte získat soubor .ascx pro uživatelský ovládací prvek z tématu Návod: Změna režimů zobrazení na stránce webových částí a umístit soubor do stejné složky jako stránka .aspx v tomto příkladu kódu.

Druhou částí příkladu je webová stránka. Obsahuje dva WebPartZone ovládací prvky, uživatelské ovládací prvky a vlastní WebPartManager ovládací prvek. Register Všimněte si direktiv v horní části stránky, které odkazují na uživatelské ovládací prvky a obor názvů pro kompilované ovládací prvky.

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

Třetí částí příkladu je uživatelský ovládací prvek pro zadávání a zobrazování textu. Všimněte si, že používá ovládací MultiView prvek k vytvoření více zobrazení uživatelského rozhraní. Jedno zobrazení se zobrazí tlačítkem, druhé bez. Všimněte si, že kód v přepsáné OnPreRender metodě kontroluje, zda je stránka aktuálně ve vlastním režimu zobrazení, a pokud ano, zobrazí první zobrazení uživatelského ovládacího prvku, které obsahuje tlačítko. Pokud stránka není ve vlastním režimu zobrazení (například pokud je stránka v režimu procházení nebo návrhu), je tlačítko skryté.

Důležité

Tento příklad obsahuje textové pole, které přijímá vstup uživatele, což je potenciální bezpečnostní hrozba. Ve výchozím nastavení ASP.NET webové stránky ověřují, že uživatelský vstup neobsahuje skript nebo elementy HTML. Další informace najdete v tématu Přehled zneužití skriptů.

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

Čtvrtou částí příkladu je zdrojový soubor pro dvě vlastní třídy. Všimněte si, že vlastní WebPartManager třída přepíše metodu CreateDisplayModes , zavolá základní metodu pro přidání všech výchozích režimů zobrazení a pak přidá vlastní režim zobrazení. Třída vlastního režimu zobrazení , InLineEditDisplayModejednoduše dědí z WebPartDisplayMode, nastaví název režimu zobrazení v konstruktoru a přepíše řadu základních vlastností, aby se vytvořily charakteristiky vlastního zobrazení.

Aby se příklad kódu spustil, musíte tento zdrojový kód zkompilovat. Můžete ho explicitně zkompilovat a umístit výsledné sestavení do složky Bin webu nebo globální mezipaměti sestavení . Případně můžete zdrojový kód umístit do složky App_Code webu, kde se bude dynamicky kompilovat za běhu. Návod, který ukazuje, jak kompilovat, najdete v tématu Návod: Vývoj a použití vlastního ovládacího prvku webového serveru.

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

Pokud chcete spustit příklad kódu, načtěte stránku v prohlížeči. Všimněte si, že stránka je aktuálně v režimu procházení a nezobrazuje se žádné tlačítko. Pomocí ovládacího prvku rozevíracího seznamu Režim zobrazení změňte stránku na Vložený režim upravit zobrazení a všimněte si, že teď je tlačítko viditelné v dolním uživatelském ovládacím prvku. Přidejte nějaký text a kliknutím na tlačítko ovládací prvek aktualizujte. Všimněte si, že zobrazení stránky je vráceno do režimu procházení, text, který jste zadali, se zobrazí a tlačítko je znovu skryté, protože stránka není ve vlastním režimu zobrazení.

Poznámky

Třída WebPartDisplayModeCollection je navržena tak, aby obsahovala kolekci WebPartDisplayMode objektů. Používá se primárně ovládacím WebPartManager prvku ke správě kolekcí WebPartDisplayMode objektů.

Režim zobrazení je zvláštní zobrazení webové stránky, které se zobrazí, když je přiřazena jako aktuální režim zobrazení ve WebPartManager.DisplayMode vlastnosti. Režimy zobrazení se používají v sadě ovládacích prvků webové části k vytváření zobrazení stránek, ve kterých mohou uživatelé provádět speciální úkoly, jako je úprava ovládacích prvků nebo změna uspořádání rozložení stránky. Ovládací WebPartManager prvek definuje několik režimů zobrazení, včetně BrowseDisplayMode, DesignDisplayModeEditDisplayMode, CatalogDisplayMode, a ConnectDisplayMode. Na kolekci režimů zobrazení odkazuje WebPartManager.DisplayModes vlastnost.

Na jakékoli konkrétní webové stránce, která používá ovládací prvky webových částí, jsou k dispozici pouze některé režimy zobrazení. Výchozí režim procházení a režim návrhu jsou téměř vždy k dispozici, ale ostatní režimy zobrazení jsou k dispozici pouze v případě, že jsou na stránce jejich odpovídající typy zón. Další informace najdete v přehledu WebPartDisplayMode třídy.

Ovládací WebPartManager prvek sleduje dostupné režimy zobrazení na stránce pomocí své SupportedDisplayModes vlastnosti. Tato vlastnost odkazuje na WebPartDisplayModeCollection objekt, který obsahuje všechny podporované režimy zobrazení.

Třída WebPartDisplayModeCollection nemá vystavený konstruktor, takže nemůžete vytvořit vlastní novou instanci. Pokud vytvoříte vlastní WebPartDisplayMode objekt a chcete, aby byl součástí kolekce podporovaných režimů zobrazení v WebPartManager ovládacím prvku, musíte dědit z WebPartManager třídy, přepsat metodu CreateDisplayModes , volat základní metodu pro vytvoření kolekce a pak přidat jakékoli vlastní režimy zobrazení do kolekce pomocí její Add metody.

Třída WebPartDisplayModeCollection má dvě veřejné vlastnosti. Vlastnost IsReadOnly je jen pro čtení, která označuje, jestli je kolekce jen pro čtení. Přetížená Item[] vlastnost poskytuje přístup ke členům kolekce.

Třída WebPartDisplayModeCollection má také několik metod. Metoda Add , která je již zmíněna, umožňuje přidat WebPartDisplayMode objekty do kolekce. Metoda Contains určuje, zda v kolekci existuje konkrétní režim zobrazení. Metoda CopyTo zkopíruje kolekci do pole objektů. Metoda IndexOf vrátí index konkrétního režimu zobrazení v rámci kolekce. Insert Nakonec metoda umožňuje vložit objekt režimu zobrazení do konkrétního indexu v kolekci.

Vlastnosti

Capacity

Získá nebo nastaví počet prvků, které CollectionBase mohou obsahovat.

(Zděděno od CollectionBase)
Count

Získá počet prvků obsažených CollectionBase v instanci. Tuto vlastnost nelze přepsat.

(Zděděno od CollectionBase)
InnerList

Získá obsahující ArrayList seznam prvků v CollectionBase instanci.

(Zděděno od CollectionBase)
IsReadOnly

Získá hodnotu, která udává, zda je kolekce určena jen pro čtení.

Item[Int32]

Získá konkrétní člen kolekce podle jeho indexu.

Item[String]

Získá konkrétního člena kolekce podle jedinečného identifikátoru.

List

Získá obsahující IList seznam prvků v CollectionBase instanci.

(Zděděno od CollectionBase)

Metody

Add(WebPartDisplayMode)

WebPartDisplayMode Přidá objekt do kolekce.

Clear()

Odebere z instance všechny objekty CollectionBase . Tuto metodu nelze přepsat.

(Zděděno od CollectionBase)
Contains(WebPartDisplayMode)

Vrátí hodnotu označující, zda v kolekci existuje konkrétní WebPartDisplayMode objekt.

CopyTo(WebPartDisplayMode[], Int32)

Zkopíruje kolekci do pole WebPartDisplayMode objektů.

Equals(Object)

Určí, zda se zadaný objekt rovná aktuálnímu objektu.

(Zděděno od Object)
GetEnumerator()

Vrátí enumerátor, který iteruje instanci CollectionBase .

(Zděděno od CollectionBase)
GetHashCode()

Slouží jako výchozí hashovací funkce.

(Zděděno od Object)
GetType()

Získá aktuální Type instanci.

(Zděděno od Object)
IndexOf(WebPartDisplayMode)

Vrátí pozici konkrétního člena kolekce.

Insert(Int32, WebPartDisplayMode)

WebPartDisplayMode Vloží objekt do kolekce na zadané pozici indexu.

MemberwiseClone()

Vytvoří mělkou kopii aktuálního Objectsouboru .

(Zděděno od Object)
OnClear()

Provádí další vlastní procesy při vymazání obsahu CollectionBase instance.

(Zděděno od CollectionBase)
OnClearComplete()

Provádí další vlastní procesy po vymazání obsahu CollectionBase instance.

(Zděděno od CollectionBase)
OnInsert(Int32, Object)

Před vložením nového prvku do CollectionBase instance provede další vlastní procesy.

(Zděděno od CollectionBase)
OnInsertComplete(Int32, Object)

Provádí další vlastní procesy po vložení nového prvku do CollectionBase instance.

(Zděděno od CollectionBase)
OnRemove(Int32, Object)

Provádí další vlastní procesy při odebírání elementu CollectionBase z instance.

(Zděděno od CollectionBase)
OnRemoveComplete(Int32, Object)

Provádí další vlastní procesy po odebrání elementu CollectionBase z instance.

(Zděděno od CollectionBase)
OnSet(Int32, Object, Object)

Před nastavením hodnoty v CollectionBase instanci provede další vlastní procesy.

(Zděděno od CollectionBase)
OnSetComplete(Int32, Object, Object)

Po nastavení hodnoty v CollectionBase instanci provede další vlastní procesy.

(Zděděno od CollectionBase)
OnValidate(Object)

Provádí další vlastní procesy při ověřování hodnoty.

(Zděděno od CollectionBase)
RemoveAt(Int32)

Odebere prvek v zadaném indexu CollectionBase instance. Tuto metodu nelze přepsat.

(Zděděno od CollectionBase)
ToString()

Vrátí řetězec, který představuje aktuální objekt.

(Zděděno od Object)

Explicitní implementace rozhraní

ICollection.CopyTo(Array, Int32)

Zkopíruje celý CollectionBase objekt do kompatibilního jednorozměrného Arrayobjektu , počínaje zadaným indexem cílového pole.

(Zděděno od CollectionBase)
ICollection.IsSynchronized

Získá hodnotu označující, zda je přístup k CollectionBase je synchronizován (bez vláken).

(Zděděno od CollectionBase)
ICollection.SyncRoot

Získá objekt, který lze použít k synchronizaci přístupu k CollectionBase.

(Zděděno od CollectionBase)
IList.Add(Object)

Přidá objekt na konec objektu CollectionBase.

(Zděděno od CollectionBase)
IList.Contains(Object)

Určuje, zda obsahuje CollectionBase určitý prvek.

(Zděděno od CollectionBase)
IList.IndexOf(Object)

Vyhledá zadaný Object a vrátí nulový index prvního výskytu v rámci celého CollectionBaseobjektu .

(Zděděno od CollectionBase)
IList.Insert(Int32, Object)

Vloží prvek do zadaného indexu CollectionBase .

(Zděděno od CollectionBase)
IList.IsFixedSize

Získá hodnotu označující, zda CollectionBase má pevnou velikost.

(Zděděno od CollectionBase)
IList.IsReadOnly

Získá hodnotu, která určuje, zda je CollectionBase určena jen pro čtení.

(Zděděno od CollectionBase)
IList.Item[Int32]

Získá nebo nastaví prvek u zadaného indexu.

(Zděděno od CollectionBase)
IList.Remove(Object)

Odebere první výskyt konkrétního objektu z objektu CollectionBase.

(Zděděno od CollectionBase)

Metody rozšíření

Cast<TResult>(IEnumerable)

Přetypuje prvky objektu na IEnumerable zadaný typ.

OfType<TResult>(IEnumerable)

Filtruje prvky objektu IEnumerable na základě zadaného typu.

AsParallel(IEnumerable)

Umožňuje paralelizaci dotazu.

AsQueryable(IEnumerable)

Převede objekt na IEnumerableIQueryable.

Platí pro

Viz také