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 Webparts-Anwendung.
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
Eine WebPartDisplayModeCollection, die alle unterstützten Anzeigemodi enthält.
Beispiele
Das folgende Codebeispiel zeigt, wie Sie die CreateDisplayModes-Methode verwenden.
Das Codebeispiel umfasst fünf Teile:
Ein Benutzersteuerelement, mit dem Sie die Anzeigemodi auf einer Webpartseite ändern können.
Eine Webseite, die die anderen Steuerelemente hostet.
Ein Benutzersteuerelement, das sich in einer WebPartZone Zone auf der Webseite befindet und ihnen das Eingeben und Anzeigen von Text in einer Bezeichnung ermöglicht.
Eine Quellcodedatei, die zwei Steuerelemente enthält. Das eine ist ein benutzerdefiniertes WebPartManager Steuerelement, das andere ein benutzerdefiniertes WebPartDisplayMode Objekt ist, das den Standardanzeigemodi der Seite hinzugefügt werden soll.
Eine Quellcodedatei, die zwei benutzerdefinierte WebPart Steuerelemente und eine benutzerdefinierte Schnittstelle enthält.
Eine Erklärung, wie das Beispiel in einem Browser funktioniert.
Der erste Teil des Codebeispiels ist das Benutzersteuerelement zum Ändern der Anzeigemodi. Sie können den Quellcode für das Benutzersteuerelement im Abschnitt Beispiel 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
Anweisungen 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 in der überschriebenen OnPreRender
Methode der Code überprüft, ob sich die Seite derzeit im benutzerdefinierten Anzeigemodus befindet, und wenn ja, zeigt die erste Ansicht des Benutzersteuerelements an, das 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, wird 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 überschreibt und zuerst die Basismethode aufruft, um alle Standardanzeigemodi hinzuzufügen, und dann den benutzerdefinierten Anzeigemodus hinzufügt. Die benutzerdefinierte Anzeigemodusklasse InLineEditDisplayMode
, erbt 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, wo er zur Laufzeit dynamisch kompiliert wird. Eine exemplarische Vorgehensweise, die das Kompilieren veranschaulicht, finden Sie unter Exemplarische Vorgehensweise: Entwickeln und Verwenden eines benutzerdefinierten Webserversteuerelements.
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
Um das Codebeispiel auszuführen, laden Sie die Seite in einen Browser. Beachten Sie, dass sich die Seite derzeit im Suchmodus befindet und keine Schaltfläche sichtbar ist. Ändern Sie mithilfe des Dropdownlistensteuerelements Anzeigemodus die Seite 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 in den Suchmodus zurückgegeben wird, der eingegebene Text jetzt angezeigt wird und die Schaltfläche erneut 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 Anzeigemodi, die auf einer bestimmten Seite unterstützt werden. Weitere Informationen zu den unterstützten Anzeigemodi finden Sie in der SupportedDisplayModes -Eigenschaft.
Standardmäßig erstellt der Webpart-Steuerelementsatz den folgenden Satz von Anzeigemodi, die auf Webpartseiten verwendet werden sollen:
Entwickler können benutzerdefinierte Anzeigemodi erstellen, entweder mit oder ohne begleitende benutzerdefinierte Zonen, die von oder - WebZoneToolZone Klassen abgeleitet werden. Um einen benutzerdefinierten Anzeigemodus zu erstellen, müssen Sie von der WebPartDisplayMode -Klasse erben. Um Ihren Anzeigemodus als unterstützten Modus auf einer Seite hinzuzufügen, müssen Sie von der WebPartManager -Klasse erben und die CreateDisplayModes -Methode überschreiben.
Wenn Sie Anzeigemodi mithilfe der Add -Methode hinzufügen, sollten Sie sie in der Reihenfolge hinzufügen, in der sie in allen Steuerelementen der Benutzeroberfläche (z. B. einem ListBox Steuerelement) angezeigt werden sollen, die benutzern die möglichen Anzeigemodi auf einer Seite bieten.