WebPartManager.CreateDisplayModes Methode

Definition

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.

Gilt für:

Weitere Informationen