Sdílet prostřednictvím


WebPartDisplayModeCollection Třída

Definice

Obsahuje kolekci WebPartDisplayMode objektů. Tuto třídu nelze zdě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 změ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 změ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 návodu: Změna režimů zobrazení v tématu stránky webových částí a umístit soubor do stejné složky jako .aspx stránka v tomto příkladu kódu.

Druhou částí příkladu je webová stránka. Obsahuje dva WebPartZone ovládací prvky, jak uživatelské ovládací prvky, tak 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 k vytvoření více zobrazení uživatelského rozhraní používá MultiView ovládací prvek. Jedno zobrazení se zobrazí s tlačítkem, druhým bez. Všimněte si, že v přepsáné OnPreRender metodě kód zkontroluje, zda je stránka aktuálně v režimu vlastního zobrazení, a pokud ano, zobrazí první zobrazení uživatelského ovládacího prvku, který obsahuje tlačítko. Pokud stránka není v režimu vlastního zobrazení (například pokud je stránka v režimu procházení nebo návrhu), tlačítko je 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 vstup uživatele neobsahuje skripty ani elementy HTML. Další informace naleznete 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>

Čtvrtá čá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 , volá základní metodu pro přidání všech výchozích režimů zobrazení a pak přidá vlastní režim zobrazení. Vlastní třída 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í pro stanovení charakteristik vlastního zobrazení.

Pro spuštění příkladu kódu je nutné zkompilovat tento zdrojový kód. Můžete jej explicitně zkompilovat a výsledné sestavení umístit do složky Bin vašeho 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 se zkompilovat, naleznete v části 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í rozevíracího seznamu Režim zobrazení změňte stránku na vložený režim zobrazení a všimněte si, že tlačítko je teď 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 se zobrazení stránky vrátí do režimu procházení, zobrazí se zadaný text a tlačítko je znovu skryté, protože stránka není v režimu vlastního zobrazení.

Poznámky

Třída WebPartDisplayModeCollection je navržena tak, aby obsahovala kolekci WebPartDisplayMode objektů. Používá se primárně WebPartManager pomocí ovládacího 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í vlastnosti WebPartManager.DisplayMode . Režimy zobrazení se používají v ovládacím prvku Webové části nastavené k vytváření zobrazení stránek, ve kterých můžou uživatelé provádět zvláštní úkoly, jako jsou úpravy 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, DesignDisplayMode, EditDisplayMode, CatalogDisplayModea ConnectDisplayMode. Na kolekci režimů zobrazení odkazuje WebPartManager.DisplayModes vlastnost.

Na každé konkrétní webové stránce, která používá ovládací prvky webových částí, jsou k dispozici pouze určité režimy zobrazení. Výchozí režim procházení a režim návrhu jsou téměř vždy dostupné, ale ostatní režimy zobrazení jsou k dispozici pouze v případě, že jsou na stránce k dispozici 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 s jeho SupportedDisplayModes vlastností. 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 ovládacím WebPartManager prvku, musíte dědit z WebPartManager třídy, přepsat metodu CreateDisplayModes , volat základní metodu pro vytvoření kolekce a potom přidat všechny vlastní režimy zobrazení do kolekce pomocí jeho Add metody.

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

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

Vlastnosti

Name Description
Capacity

Získá nebo nastaví počet prvků, které CollectionBase může 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

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

(Zděděno od CollectionBase)
IsReadOnly

Získá hodnotu určující, zda kolekce je jen pro čtení.

Item[Int32]

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

Item[String]

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

List

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

(Zděděno od CollectionBase)

Metody

Name Description
Add(WebPartDisplayMode)

WebPartDisplayMode Přidá objekt do kolekce.

Clear()

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

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

Vrátí hodnotu určující, zda určitý WebPartDisplayMode objekt existuje v kolekci.

CopyTo(WebPartDisplayMode[], Int32)

Zkopíruje kolekci do pole WebPartDisplayMode objektů.

Equals(Object)

Určuje, zda je zadaný objekt roven aktuálnímu objektu.

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

Vrátí enumerátor, který iteruje prostřednictvím CollectionBase instance.

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

Slouží jako výchozí funkce hash.

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

Získá Type aktuální instance.

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

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

Insert(Int32, WebPartDisplayMode)

Vloží WebPartDisplayMode objekt do kolekce na určené pozici indexu.

MemberwiseClone()

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

(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)

Provádí další vlastní procesy před vložením nového prvku do CollectionBase instance.

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

Provede 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)

Provede další vlastní procesy po nastavení hodnoty v CollectionBase instanci.

(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. Tato metoda není přepsatelná.

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

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

(Zděděno od Object)

Explicitní implementace rozhraní

Name Description
ICollection.CopyTo(Array, Int32)

Zkopíruje celý CollectionBase soubor do kompatibilního jednorozměrného Array, 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 této synchronizaci (bezpečné vlákno).

(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 index a vrátí index založený na nule prvního výskytu v celém CollectionBaserozsahu .

(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 určující, zda CollectionBase má pevnou velikost.

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

Získá hodnotu určující, zda je jen pro CollectionBase čtení.

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

Získá nebo nastaví prvek v zadaném 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í

Name Description
AsParallel(IEnumerable)

Umožňuje paralelizaci dotazu.

AsQueryable(IEnumerable)

Převede IEnumerable na IQueryable.

Cast<TResult>(IEnumerable)

Přetypuje prvky IEnumerable na zadaný typ.

OfType<TResult>(IEnumerable)

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

Platí pro

Viz také