WebPartManager.CreateDisplayModes Methode
Definition
Wichtig
Einige Informationen beziehen sich auf Vorabversionen, die vor dem Release ggf. grundlegend überarbeitet werden. Microsoft übernimmt hinsichtlich der hier bereitgestellten Informationen keine Gewährleistungen, seien sie ausdrücklich oder konkludent.
Erstellt den Satz aller möglichen Anzeigemodi für eine Webpartanwendung.
protected:
virtual System::Web::UI::WebControls::WebParts::WebPartDisplayModeCollection ^ CreateDisplayModes();
protected virtual System.Web.UI.WebControls.WebParts.WebPartDisplayModeCollection CreateDisplayModes();
abstract member CreateDisplayModes : unit -> System.Web.UI.WebControls.WebParts.WebPartDisplayModeCollection
override this.CreateDisplayModes : unit -> System.Web.UI.WebControls.WebParts.WebPartDisplayModeCollection
Protected Overridable Function CreateDisplayModes () As WebPartDisplayModeCollection
Gibt zurück
A WebPartDisplayModeCollection that contains all the display modes that are supported.
Beispiele
Im folgenden Codebeispiel wird die Verwendung der CreateDisplayModes Methode veranschaulicht.
Das Codebeispiel umfasst fünf Teile:
Ein Benutzersteuerelement, mit dem Sie Anzeigemodi auf einer Webparts-Seite ändern können.
Eine Webseite, auf der die anderen Steuerelemente gehostet werden.
Ein Benutzersteuerelement, das sich in einer WebPartZone Zone auf der Webseite befindet, und ermöglicht es Ihnen, Text in eine Beschriftung einzugeben und anzuzeigen.
Eine Quellcodedatei, die zwei Steuerelemente enthält. Eines ist ein benutzerdefiniertes Steuerelement, und das andere ist ein benutzerdefiniertes WebPartManagerWebPartDisplayMode Objekt, das den Standardanzeigemodi der Seite hinzugefügt werden soll.
Eine Quellcodedatei mit zwei benutzerdefinierten Steuerelementen und einer benutzerdefinierten WebPart Schnittstelle.
Eine Erläuterung der Funktionsweise des Beispiels in einem Browser.
Der erste Teil des Codebeispiels ist das Benutzersteuerelement zum Ändern von Anzeigemodi. Sie können den Quellcode für das Benutzersteuerelement aus dem Beispielabschnitt der WebPartManager Klassenübersicht abrufen. Weitere Informationen zu Anzeigemodi und zur Funktionsweise des Benutzersteuerelements finden Sie unter Exemplarische Vorgehensweise: Ändern von Anzeigemodi auf einer Webpartseite.
Der zweite Teil des Beispiels ist die Webseite. Es enthält zwei WebPartZone Steuerelemente, sowohl Benutzersteuerelemente als auch das benutzerdefinierte WebPartManager Steuerelement. Beachten Sie die Register Direktiven oben auf der Seite, um auf die Benutzersteuerelemente und den Namespace für die kompilierten Steuerelemente zu verweisen.
<%@ 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>
Der dritte Teil des Beispiels ist das Benutzersteuerelement zum Eingeben und Anzeigen von Text. Es verwendet ein MultiView Steuerelement, um mehrere Ansichten der Benutzeroberfläche zu erstellen. Eine Ansicht wird mit der Button1 Schaltfläche angezeigt, die andere ohne. Beachten Sie, dass der Code in der überschriebenen OnPreRender Methode überprüft, ob sich die Seite derzeit im benutzerdefinierten Anzeigemodus befindet, und in diesem Falls ja, die erste Ansicht des Benutzersteuerelements anzeigt, die die Schaltfläche enthält. Wenn sich die Seite nicht im benutzerdefinierten Anzeigemodus befindet, z. B. wenn sich die Seite im Such- oder Entwurfsmodus befindet, ist die Schaltfläche ausgeblendet.
<%@ 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>
Der vierte Teil des Beispiels ist die Quelldatei für die beiden benutzerdefinierten Klassen. Beachten Sie, dass die benutzerdefinierte WebPartManager Klasse die CreateDisplayModes Methode außer Kraft setzt und zuerst die Basismethode aufruft, um alle Standardanzeigemodi hinzuzufügen und dann den benutzerdefinierten Anzeigemodus hinzuzufügen. Die klasse des benutzerdefinierten Anzeigemodus , InLineEditDisplayModeerbt einfach von WebPartDisplayMode, legt den Namen des Anzeigemodus im Konstruktor fest und überschreibt eine Reihe der Basiseigenschaften, um die Merkmale der benutzerdefinierten Anzeige festzulegen.
Damit das Codebeispiel ausgeführt werden kann, müssen Sie diesen Quellcode kompilieren. Sie können sie explizit kompilieren und die resultierende Assembly im Ordner "Bin" ihrer Website oder im globalen Assemblycache ablegen. Alternativ können Sie den Quellcode im App_Code Ordner Ihrer Website ablegen, in dem er zur Laufzeit dynamisch kompiliert wird. Eine exemplarische Vorgehensweise, die das Kompilieren veranschaulicht, finden Sie unter Walkthrough: Developing and Using a Custom Web Server Control.
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
Laden Sie die Seite in einem Browser, um das Codebeispiel auszuführen. Beachten Sie, dass sich die Seite derzeit im Suchmodus befindet und keine Schaltfläche sichtbar ist. Ändern Sie mit dem Dropdownlistensteuerelement " Anzeigemodus" den Seitenmodus in den Anzeigemodus "Inline bearbeiten ", und beachten Sie, dass die Button1 Schaltfläche jetzt im unteren Benutzersteuerelement sichtbar ist. Fügen Sie Text hinzu, und klicken Sie auf die Schaltfläche, um das Steuerelement zu aktualisieren. Beachten Sie, dass die Seitenanzeige im Suchmodus zurückgegeben wird, der eingegebene Text jetzt angezeigt wird und die Schaltfläche wieder ausgeblendet wird, da sich die Seite nicht mehr im benutzerdefinierten Anzeigemodus befindet.
Hinweise
Mit dieser Methode wird die Liste aller möglichen Anzeigemodi erstellt, nicht nur die auf einer bestimmten Seite unterstützten Anzeigemodi. Weitere Informationen zu den unterstützten Anzeigemodi finden Sie in der SupportedDisplayModes Eigenschaft.
Standardmäßig erstellt der Steuerelementsatz für Webparts den folgenden Satz von Anzeigemodi, die auf Webpartseiten verwendet werden sollen:
Entwickler können benutzerdefinierte Anzeigemodi entweder mit oder ohne zugehörige benutzerdefinierte Zonen erstellen, die von den WebZone Klassen abgeleitet sind ToolZone . Um einen benutzerdefinierten Anzeigemodus zu erstellen, müssen Sie von der WebPartDisplayMode Klasse erben und den Anzeigemodus als unterstützten Modus auf einer Seite hinzufügen, müssen Sie von der WebPartManager Klasse erben und die CreateDisplayModes Methode außer Kraft setzen.
Wenn Sie Anzeigemodi mithilfe der Add Methode hinzufügen, sollten Sie diese in der Reihenfolge hinzufügen, in der sie in allen Ui-Steuerelementen (z. B. einem ListBox Steuerelement) angezeigt werden sollen, die Benutzern die möglichen Anzeigemodi auf einer Seite bereitstellen.