WebPartDisplayModeCollection Třída
Definice
Důležité
Některé informace platí pro předběžně vydaný produkt, který se může zásadně změnit, než ho výrobce nebo autor vydá. Microsoft neposkytuje žádné záruky, výslovné ani předpokládané, týkající se zde uváděných informací.
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
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í , InLineEditDisplayMode
jednoduš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. |