WebPartManager.CreateDisplayModes Metoda
Definicja
Ważne
Niektóre informacje odnoszą się do produktu w wersji wstępnej, który może zostać znacząco zmodyfikowany przed wydaniem. Firma Microsoft nie udziela żadnych gwarancji, jawnych lub domniemanych, w odniesieniu do informacji podanych w tym miejscu.
Tworzy zestaw wszystkich możliwych trybów wyświetlania dla aplikacji składników Web Part.
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
Zwraca
Element WebPartDisplayModeCollection zawierający wszystkie obsługiwane tryby wyświetlania.
Przykłady
W poniższym przykładzie kodu pokazano, jak używać CreateDisplayModes metody .
Przykładowy kod ma pięć części:
Kontrolka użytkownika, która umożliwia zmianę trybów wyświetlania na stronie składników Web Part.
Strona sieci Web, która hostuje inne kontrolki.
Kontrolka użytkownika, która znajduje się w WebPartZone strefie na stronie sieci Web i umożliwia wprowadzanie i wyświetlanie tekstu w etykiecie.
Plik kodu źródłowego zawierający dwie kontrolki. Jedna z nich jest kontrolką niestandardową WebPartManager , a druga jest obiektem niestandardowym WebPartDisplayMode do dodawania do domyślnych trybów wyświetlania strony.
Plik kodu źródłowego zawierający dwie kontrolki niestandardowe WebPart i interfejs niestandardowy.
Wyjaśnienie sposobu działania przykładu w przeglądarce.
Pierwszą częścią przykładu kodu jest kontrolka użytkownika do zmieniania trybów wyświetlania. Kod źródłowy kontrolki użytkownika można uzyskać z sekcji Przykład w przeglądzie WebPartManager klasy. Aby uzyskać więcej informacji na temat trybów wyświetlania i sposobu działania kontrolki użytkownika, zobacz Przewodnik: zmienianie trybów wyświetlania na stronie składników Web Part.
Drugą częścią przykładu jest strona sieci Web. Zawiera ona dwie WebPartZone kontrolki, zarówno kontrolki użytkownika, jak i kontrolkę niestandardową WebPartManager . Zwróć uwagę na Register
dyrektywy w górnej części strony, aby odwoływać się do kontrolek użytkownika i przestrzeni nazw dla skompilowanych kontrolek.
<%@ 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>
Trzecia część przykładu to kontrolka użytkownika do wprowadzania i wyświetlania tekstu. Używa kontrolki MultiView do tworzenia wielu widoków interfejsu użytkownika. Jeden widok jest wyświetlany za pomocą Button1
przycisku , drugi bez. Zwróć uwagę, że w metodzie zastąpienia OnPreRender
kod sprawdza, czy strona jest obecnie w trybie wyświetlania niestandardowego, a jeśli tak, wyświetla pierwszy widok kontrolki użytkownika, który zawiera przycisk. Jeśli strona nie znajduje się w trybie wyświetlania niestandardowego, na przykład jeśli strona jest w trybie przeglądania lub projektowania, przycisk jest ukryty.
<%@ 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>
Czwartą częścią przykładu jest plik źródłowy dla dwóch klas niestandardowych. Zwróć uwagę, że klasa niestandardowa WebPartManager zastępuje metodę CreateDisplayModes i najpierw wywołuje metodę podstawową, aby dodać wszystkie domyślne tryby wyświetlania, a następnie dodaje tryb wyświetlania niestandardowego. Niestandardowa klasa trybu wyświetlania, InLineEditDisplayMode
, po prostu dziedziczy z WebPartDisplayMode, ustawia nazwę trybu wyświetlania w konstruktorze i zastępuje wiele właściwości podstawowych w celu ustalenia cech wyświetlania niestandardowego.
Aby przykład kodu został uruchomiony, należy skompilować ten kod źródłowy. Można je jawnie skompilować i umieścić wynikowy zestaw w folderze Bin witryny sieci Web lub globalnej pamięci podręcznej zestawów. Możesz też umieścić kod źródłowy w folderze App_Code witryny, w którym będzie dynamicznie kompilowany w czasie wykonywania. Aby zapoznać się z przewodnikiem, który pokazuje, jak skompilować, zobacz Przewodnik: opracowywanie i używanie niestandardowej kontrolki serwera sieci Web.
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
Aby uruchomić przykład kodu, załaduj stronę w przeglądarce. Zwróć uwagę, że strona jest obecnie w trybie przeglądania, a żaden przycisk nie jest widoczny. Za pomocą kontrolki listy rozwijanej Tryb wyświetlania zmień stronę na Tryb wyświetlania w tekście i zwróć uwagę, że teraz Button1
przycisk jest widoczny w niższej kontrolce użytkownika. Dodaj jakiś tekst i kliknij przycisk, aby zaktualizować kontrolkę. Zwróć uwagę, że ekran strony jest zwracany do trybu przeglądania, wprowadzony tekst jest teraz wyświetlany, a przycisk jest ponownie ukryty, ponieważ strona nie jest już w trybie wyświetlania niestandardowego.
Uwagi
Ta metoda tworzy listę wszystkich możliwych trybów wyświetlania, a nie tylko tryby wyświetlania obsługiwane na określonej stronie. Aby uzyskać więcej informacji na temat obsługiwanych trybów wyświetlania, zobacz SupportedDisplayModes właściwość .
Domyślnie zestaw kontrolek składników Web Part tworzy następujący zestaw trybów wyświetlania do użycia na stronach składników Web Part:
Deweloperzy mogą tworzyć niestandardowe tryby wyświetlania z towarzyszącymi strefami niestandardowymi lub bez nich pochodzącymi z WebZone klas lub ToolZone . Aby utworzyć niestandardowy tryb wyświetlania, musisz dziedziczyć z WebPartDisplayMode klasy i dodać tryb wyświetlania jako obsługiwany tryb na stronie, musisz dziedziczyć z WebPartManager klasy i zastąpić CreateDisplayModes metodę.
W przypadku dodawania trybów wyświetlania przy użyciu Add metody należy dodać je w kolejności, w której mają one być wyświetlane w dowolnych kontrolkach interfejsu użytkownika (takich jak kontrolka ListBox ), które zapewniają użytkownikom możliwe tryby wyświetlania na stronie.