Diese Dokumentation wurde archiviert und wird nicht länger gepflegt.

WebPartZoneBase-Klasse

Aktualisiert: November 2007

Wird als Basisklasse für alle Zonensteuerelemente verwendet, die als Container für WebPart-Steuerelemente (oder andere Serversteuerelemente) fungieren.

Namespace:  System.Web.UI.WebControls.WebParts
Assembly:  System.Web (in System.Web.dll)

[AspNetHostingPermissionAttribute(SecurityAction.InheritanceDemand, Level = AspNetHostingPermissionLevel.Minimal)]
[AspNetHostingPermissionAttribute(SecurityAction.LinkDemand, Level = AspNetHostingPermissionLevel.Minimal)]
public abstract class WebPartZoneBase : WebZone, 
	IPostBackEventHandler
/** @attribute AspNetHostingPermissionAttribute(SecurityAction.InheritanceDemand, Level = AspNetHostingPermissionLevel.Minimal) */
/** @attribute AspNetHostingPermissionAttribute(SecurityAction.LinkDemand, Level = AspNetHostingPermissionLevel.Minimal) */
public abstract class WebPartZoneBase extends WebZone implements IPostBackEventHandler
public abstract class WebPartZoneBase extends WebZone implements IPostBackEventHandler
<asp:WebPartZoneBase />

Im Webparts-Steuerelementsatz ist eine Zone ein als HTML-Tabelle wiedergegebenes zusammengesetztes Steuerelement, das in einem definierten Bereich einer Webseite andere Steuerelemente enthält. Die WebPartZoneBase-Klasse ist eine Zone, die von der WebZone-Basisklasse erbt und einen Verhaltensbasissatz für abgeleitete Zonen bereitstellt, die WebPart-Steuerelemente, Serverserversteuerelemente und Benutzersteuerelemente enthalten. Die Kombination von WebPartZoneBase-Zonen mit WebPart-Steuerelementen (und anderen Serversteuerelementen) bildet die primäre Benutzeroberfläche einer Webparts-Anwendung, die normale Seitenansicht, mit der Benutzer den größten Teil der Zeit interagieren.

Alle Zonen stellen einen gemeinsamen Satz von Benutzeroberflächenelementen für die in ihnen enthaltenen Steuerelemente bereit. Eine ausführliche Beschreibung der allen Zonen gemeinsamen Benutzeroberflächenelemente finden Sie im Beispielabschnitt des Übersichtsthemas für die WebZone-Klasse. Die WebPartZoneBase-Zone umfasst einen Inhaltsbereich, der Serversteuerelemente enthält, und ein zugeordnetes WebPartChrome-Objekt, mit dessen Hilfe die enthaltenen Steuerelemente und ihre Chromelemente (z. B. Verben, Rahmen usw.) wiedergegeben werden.

Zusätzlich zu den von der WebZone-Klasse geerbten Features fügt die WebPartZoneBase-Klasse clientseitiges Ziehen von Steuerelementen, bestimmte Verben, die gängige Benutzeroberflächenaktionen wie das Minimieren, Schließen, Löschen und Bearbeiten von Steuerelementen ermöglichen, sowie zusätzliche Stilfeatures hinzu. Die WebPartZoneBase-Klasse ist außerdem die Klasse, von der Sie erben müssen, um eine datenbankgesteuerte benutzerdefinierte Zone zu entwerfen. Sie können beispielsweise eine benutzerdefinierte Webparts-Zone zum Wetter erstellen, die von WebPartZoneBase erbt und Layoutfeatures und andere Dienste für WebPart-Steuerelemente enthält und bereitstellt, die datengebunden sind und Informationen zum Wetter anzeigen.

Die WebPartZoneBase-Klasse enthält eine Reihe von Eigenschaften für die Arbeit mit Stilattributen in einer Zone. Für Rahmen stehen mehrere Eigenschaften zur Verfügung, einschließlich BorderStyle und BorderWidth. Darüber hinaus gibt es eine Gruppe von Eigenschaften für die Arbeit mit Stilattributen von Menüs, die im Header einer Zone angezeigt werden können, z. B. MenuLabelStyle, MenuVerbStyle usw.

Die WebPartZoneBase-Klasse enthält auch einige Member zur Behandlung von Verben in einer Zone. Diese Member beziehen sich auf die Verben, die für die Teilsteuerelemente in der Zone angezeigt werden. In WebPartZoneBase-Zonen sind standardmäßig keine Verben auf der Zonenebene vorhanden. Sie können jedoch hinzugefügt werden. Mit dem Webparts-Steuerelementsatz wird ein Satz von Standardverben zur Verwendung mit Teilsteuerelementen bereitgestellt, dem Entwickler benutzerdefinierte Verben hinzufügen können. Zu den wichtigen Eigenschaften für die Arbeit mit Verben gehören Eigenschaften, die auf einige der Standardverbenobjekte verweisen, z. B. CloseVerb, ConnectVerb, DeleteVerb und EditVerb, HelpVerb und MinimizeVerb. Die Standardverben werden auf der Titelleiste aller in der einer Zone enthaltenen Steuerelemente in einem Verbenmenü angezeigt, das in der Regel auf der Benutzeroberfläche als Dropdownmenü dargestellt wird. Darüber hinaus gibt es die VerbButtonType-Eigenschaft, mit der Sie festlegen können, durch welchen Typ von Objekten, auf die geklickt werden kann, ein Verb auf der Benutzeroberfläche dargestellt wird.

Weitere Schlüsselmember für die Arbeit mit Verben sind die OnCreateVerbs-Methode, die einen Ereignishandler darstellt, der zur benutzerdefinierten Behandlung des Verberstellungsprozesses überschrieben werden kann, und das CreateVerbs-Ereignis.

Die WebPartZoneBase-Klasse enthält eine Reihe von Membern für die Arbeit mit den WebPart-Steuerelementen in einer Zone. Die WebParts-Eigenschaft verweist auf der Auflistung aller WebPart-Steuerelemente (und anderer Serversteuerelemente) in der Zone. Mehrere Methoden entsprechen den Standardverben oder -aktionen, die für WebPart-Steuerelemente in einer Zone ausgeführt werden können, z. B. CloseWebPart, ConnectWebPart und EditWebPart.

Außerdem gibt es mehrere Member in der WebPartZoneBase-Klasse, die das Layout oder die Anordnung der WebPart-Steuerelemente in der Zone betreffen. Die AllowLayoutChange-Eigenschaft bestimmt, ob Steuerelemente zwischen Zonen verschoben oder innerhalb einer Zone neu angeordnet werden können. Mit der LayoutOrientation-Eigenschaft können Sie bestimmen, ob die Steuerelemente in einer Zone horizontal oder vertikal angeordnet werden.

h7cxt939.alert_note(de-de,VS.90).gifHinweis:

Internet Explorer gibt die Höhe einer WebPartZone oder der darin enthaltenen Steuerelemente möglicherweise nicht wie erwartet wieder, abhängig von der Ausrichtung der Zone. Weitere Details finden Sie in der Dokumentation für die LayoutOrientation-Eigenschaft oder die Height-Eigenschaft.

Andere Methoden in der WebPartZoneBase-Klasse stellen detaillierte programmgesteuerte Kontrolle über die Wiedergabe der verschiedenen Bereiche einer Zone bereit. Viele dieser Methoden überschreiben die von der WebZone-Klasse geerbten Basismethoden, um die Wiedergabe für Zonen mit WebPart-Steuerelementen anzupassen. Zu den wichtigen Methoden gehören Render, RenderBody, RenderDropCue und RenderHeader.

Im folgenden Codebeispiel wird die Verwendung der WebPartZoneBase-Klasse veranschaulicht. Im Code wird veranschaulicht, wie eine abgeleitete Klasse, WebPartZone, auf einer Webparts-Seite deklarativ als Container für WebPart-Steuerelemente verwendet wird. Das Codebeispiel besteht aus vier Abschnitten. In den ersten drei Abschnitten werden die Codedateien beschrieben, und im vierten Abschnitt wird die Codeausführung erklärt.

Beim ersten Teil des Codebeispiels handelt es sich um ein Benutzersteuerelement, mit dem die Seite in verschiedene Anzeigemodi geschaltet werden kann. Weitere Informationen zu Webparts-Anzeigemodi und eine Beschreibung zum Code in diesem Steuerelement finden Sie unter Exemplarische Vorgehensweise: Wechseln des Anzeigemodus auf einer Webparts-Seite.

<%@ control language="C#" classname="DisplayModeMenuCS"%>
<script runat="server">

 // Use a field to reference the current WebPartManager.
  WebPartManager _manager;

  void Page_Init(object sender, EventArgs e)
  {
    Page.InitComplete += new EventHandler(InitComplete);
  }  

  void InitComplete(object sender, System.EventArgs e)
  {
    _manager = WebPartManager.GetCurrentWebPartManager(Page);

    String browseModeName = WebPartManager.BrowseDisplayMode.Name;

    // Fill the dropdown with the names of supported display modes.
    foreach (WebPartDisplayMode mode in _manager.SupportedDisplayModes)
    {
      String modeName = mode.Name;
      // Make sure a mode is enabled before adding it.
      if (mode.IsEnabled(_manager))
      {
        ListItem item = new ListItem(modeName, modeName);
        DisplayModeDropdown.Items.Add(item);
      }
    }

    // If shared scope is allowed for this user, display the scope-switching
    // UI and select the appropriate radio button for the current user scope.
    if (_manager.Personalization.CanEnterSharedScope)
    {
      Panel2.Visible = true;
      if (_manager.Personalization.Scope == PersonalizationScope.User)
        RadioButton1.Checked = true;
      else
        RadioButton2.Checked = true;
    }

  }

  // Change the page to the selected display mode.
  void DisplayModeDropdown_SelectedIndexChanged(object sender, EventArgs e)
  {
    String selectedMode = DisplayModeDropdown.SelectedValue;

    WebPartDisplayMode mode = _manager.SupportedDisplayModes[selectedMode];
    if (mode != null)
      _manager.DisplayMode = mode;
  }

  // Set the selected item equal to the current display mode.
  void Page_PreRender(object sender, EventArgs e)
  {
    ListItemCollection items = DisplayModeDropdown.Items;
    int selectedIndex = 
      items.IndexOf(items.FindByText(_manager.DisplayMode.Name));
    DisplayModeDropdown.SelectedIndex = selectedIndex;
  }

  // Reset all of a user's personalization data for the page.
  protected void LinkButton1_Click(object sender, EventArgs e)
  {
    _manager.Personalization.ResetPersonalizationState();
  }

  // If not in User personalization scope, toggle into it.
  protected void RadioButton1_CheckedChanged(object sender, EventArgs e)
  {
    if (_manager.Personalization.Scope == PersonalizationScope.Shared)
      _manager.Personalization.ToggleScope();
  }

  // If not in Shared scope, and if user is allowed, toggle the scope.
  protected void RadioButton2_CheckedChanged(object sender, EventArgs e)
  {
    if (_manager.Personalization.CanEnterSharedScope && 
        _manager.Personalization.Scope == PersonalizationScope.User)
      _manager.Personalization.ToggleScope();
  }
</script>
<div>
  <asp:Panel ID="Panel1" runat="server" 
    Borderwidth="1" 
    Width="230" 
    BackColor="lightgray"
    Font-Names="Verdana, Arial, Sans Serif" >
    <asp:Label ID="Label1" runat="server" 
      Text="&nbsp;Display Mode" 
      Font-Bold="true"
      Font-Size="8"
      Width="120" 
      AssociatedControlID="DisplayModeDropdown"/>
    <asp:DropDownList ID="DisplayModeDropdown" runat="server"  
      AutoPostBack="true" 
      Width="120"
      OnSelectedIndexChanged="DisplayModeDropdown_SelectedIndexChanged" />
    <asp:LinkButton ID="LinkButton1" runat="server"
      Text="Reset User State" 
      ToolTip="Reset the current user's personalization data for the page."
      Font-Size="8" 
      OnClick="LinkButton1_Click" />
    <asp:Panel ID="Panel2" runat="server" 
      GroupingText="Personalization Scope"
      Font-Bold="true"
      Font-Size="8" 
      Visible="false" >
      <asp:RadioButton ID="RadioButton1" runat="server" 
        Text="User" 
        AutoPostBack="true"
        GroupName="Scope" OnCheckedChanged="RadioButton1_CheckedChanged" />
      <asp:RadioButton ID="RadioButton2" runat="server" 
        Text="Shared" 
        AutoPostBack="true"
        GroupName="Scope" 
        OnCheckedChanged="RadioButton2_CheckedChanged" />
    </asp:Panel>
  </asp:Panel>
</div>


Der zweite Teil des Codebeispiels ist eine Code-Beside-Datei, die Code zur Behandlung von Ereignissen für die Hauptwebseite enthält. Im Code in dieser Datei wird der programmgesteuerte Umgang mit einigen der wichtigsten WebPartZoneBase-Member veranschaulicht.

using System;
using System.Text;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;

public partial class WebPartZoneBase_overview : System.Web.UI.Page
{
  protected void Page_Load(Object sender, EventArgs e)
  {
    Label1.Text = DateTime.Now.ToLongDateString();
    Label2.Text = String.Empty;
  }

  protected void Button1_Click(object sender, EventArgs e)
  {
    if (WebPartZone2.VerbButtonType == ButtonType.Button)
      WebPartZone2.VerbButtonType = ButtonType.Link;
    else
      WebPartZone2.VerbButtonType = ButtonType.Button;
  }

  protected void Button2_Click(object sender, EventArgs e)
  {
    if (WebPartZone1.LayoutOrientation == Orientation.Vertical)
      WebPartZone1.LayoutOrientation = Orientation.Horizontal;
    else
      WebPartZone1.LayoutOrientation = Orientation.Vertical;
    Page_Load(sender, e);
  }

  protected void Button3_Click(object sender, EventArgs e)
  {
    StringBuilder builder = new StringBuilder();
    builder.AppendLine(@"<strong>WebPartZone1 WebPart IDs</strong><br />");
    foreach (WebPart part in WebPartZone1.WebParts)
    {
      builder.AppendLine("ID: " + part.ID 
                          + "; Type:  " + part.GetType() 
                          + @"<br />");
    }
    Label2.Text = builder.ToString();
    Label2.Visible = true;
  }

  protected void Button4_Click(object sender, EventArgs e)
  {
    StringBuilder builder = new StringBuilder();
    builder.AppendLine(@"<strong>WebPartZone1 DisplayTitle Property</strong><br />");
    builder.AppendLine(WebPartZone1.DisplayTitle + @"<br />");
    Label2.Text = builder.ToString();
    Label2.Visible = true;
  }
}


Der dritte Teil des Codebeispiels ist die Webseite, die die WebPartZone-Steuerelemente, die Verhalten aus der WebPartZoneBase-Basisklasse zeigen, sowie die in den Zonen enthaltenen WebPart-Steuerelemente enthält.

<%@ Page Language="C#" 
  Codefile="webpartzonebase_overview.cs"
  Inherits="WebPartZoneBase_overview"  %>
<%@ register TagPrefix="uc1" 
  TagName="DisplayModeMenuCS" 
  Src="DisplayModeMenuCS.ascx" %>

<!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>WebPartZoneBase Example</title>
</head>
<body>
    <form id="form1" runat="server">
    <div>
      <asp:WebPartManager ID="WebPartManager1" Runat="server" />
      <uc1:DisplayModeMenuCS ID="DisplayModeMenu1" runat="server" />
      <table width="75%">
        <tr>
          <td>
            <asp:WebPartZone 
              ID="WebPartZone1" 
              Runat="server"
              LayoutOrientation="Vertical" >
              <EditVerb Text="Edit WebPart" />
              <SelectedPartChromeStyle BackColor="LightBlue" />
              <ZoneTemplate>
                <asp:BulletedList 
                  ID="BulletedList1" 
                  Runat="server"
                  DisplayMode="HyperLink" 
                  Title="Favorite Links" >
                  <asp:ListItem Value="http://msdn.microsoft.com">
                    MSDN
                  </asp:ListItem>
                  <asp:ListItem Value="http://www.asp.net">
                    ASP.NET
                  </asp:ListItem>
                  <asp:ListItem Value="http://www.msn.com">
                    MSN
                  </asp:ListItem>
                </asp:BulletedList>
                <asp:Calendar ID="Calendar1" Runat="server" 
                  Title="My Calendar" />
              </ZoneTemplate>
            </asp:WebPartZone>
          </td>
          <td valign="top" align="right">
            <asp:WebPartZone 
              ID="WebPartZone2"
              Runat="server" 
              DragHighlightColor="#00ff00"
              AllowLayoutChange="true"
              EmptyZoneText="Add WebParts to this empty Zone."
              BorderWidth="2"
              BorderColor="DarkBlue"
              BorderStyle="Dashed" 
              MenuLabelText="Verbs Menu" 
              MenuPopupImageUrl="label.gif" >
              <VerbStyle Font-Italic="true" />
              <MenuLabelStyle BackColor="Lime" BorderWidth="1"  />
              <MenuLabelHoverStyle Font-Bold="true" />
              <MenuVerbHoverStyle BackColor="LightGrey" />
              <MenuVerbStyle Font-Italic="true" /> 
              <ZoneTemplate>
                <asp:Label ID="Label1" Runat="server" Title="Date" />
              </ZoneTemplate>
            </asp:WebPartZone>
          </td>
        </tr>
        <tr>
          <td>
            <asp:EditorZone ID="EditorZone1" Runat="server">
              <ZoneTemplate>
                <asp:AppearanceEditorPart ID="AppearanceEditorPart1" 
                  Runat="server" />
                <asp:LayoutEditorPart ID="LayoutEditorPart1" 
                  Runat="server" />
              </ZoneTemplate>
            </asp:EditorZone>      
          </td>
        </tr>
      </table>
    </div>
    <asp:Button ID="Button1" Runat="server" 
      Width="200" Text="Toggle WebPartZone2 Buttons" 
      OnClick="Button1_Click" />
    <br />
    <asp:Button ID="Button2" Runat="server" 
      Width="200"  Text="Toggle Layout Orientation" 
      OnClick="Button2_Click" />
    <br />
    <asp:Button ID="Button3" Runat="server" 
      Width="200" Text="List WebPartZone1 WebParts" 
      OnClick="Button3_Click" />
    <br />
    <asp:Button ID="Button4" Runat="server" 
      Width="200" Text="WebPartZone1 Display Title" 
      OnClick="Button4_Click" />
    <br />
    <asp:Label ID="Label2" Runat="server" Visible="false" />
    </form>
</body>
</html>


Laden Sie die Webseite in einem Browser. Schalten Sie die Seite mithilfe des Dropdownlisten-Steuerelements Anzeigemodus in den Entwurfsmodus, klicken Sie auf die WebPart-Steuerelemente, und versuchen Sie, diese durch Ziehen zwischen den sichtbaren Zonen zu verschieben. Klicken Sie auf der Seite auf einige der Schaltflächen, um darzustellen, wie sich die Verwendung verschiedener Member der WebPartZoneBase-Klasse auswirkt. Schalten Sie die Seite anschließend in den Bearbeitungsmodus. Vergewissern Sie sich, dass ein WebPart-Steuerelement in WebPartZone2 positioniert ist. Um das Steuerelement zu bearbeiten, klicken Sie auf der Titelleiste des Steuerelements auf das Verbenmenü und dann auf Bearbeiten. Wenn Sie mit der Bearbeitung dieses Steuerelements fertig sind, bearbeiten Sie eines der Steuerelemente in der anderen Zone. Achten Sie dabei auf die Unterschiede in den Benutzeroberflächenstilen der Steuerelemente und Zonen, die durch die Verwendung der verschiedenen Member der WebPartZoneBase-Klasse zustande kommen.

Alle öffentlichen static (Shared in Visual Basic)-Member dieses Typs sind threadsicher. Bei Instanzmembern ist die Threadsicherheit nicht gewährleistet.

Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework und .NET Compact Framework unterstützen nicht alle Versionen sämtlicher Plattformen. Eine Liste der unterstützten Versionen finden Sie unter Systemanforderungen für .NET Framework.

.NET Framework

Unterstützt in: 3.5, 3.0, 2.0
Anzeigen: