Export (0) Print
Expand All

WebPartDisplayModeCollection Class

Contains a collection of WebPartDisplayMode objects. This class cannot be inherited.

System.Object
  System.Collections.CollectionBase
    System.Web.UI.WebControls.WebParts.WebPartDisplayModeCollection

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

public sealed class WebPartDisplayModeCollection : CollectionBase

The WebPartDisplayModeCollection type exposes the following members.

  NameDescription
Public propertyCapacityGets or sets the number of elements that the CollectionBase can contain. (Inherited from CollectionBase.)
Public propertyCountGets the number of elements contained in the CollectionBase instance. This property cannot be overridden. (Inherited from CollectionBase.)
Public propertyIsReadOnlyGets a value indicating whether the collection is read-only.
Public propertyItem[Int32]Gets a specific member of the collection according to its index.
Public propertyItem[String]Gets a specific member of the collection according to a unique identifier.
Top

  NameDescription
Public methodAddAdds a WebPartDisplayMode object to the collection.
Public methodClearRemoves all objects from the CollectionBase instance. This method cannot be overridden. (Inherited from CollectionBase.)
Public methodContainsReturns a value indicating whether a particular WebPartDisplayMode object exists in the collection.
Public methodCopyToCopies the collection to an array of WebPartDisplayMode objects.
Public methodEquals(Object)Determines whether the specified object is equal to the current object. (Inherited from Object.)
Public methodGetEnumeratorReturns an enumerator that iterates through the CollectionBase instance. (Inherited from CollectionBase.)
Public methodGetHashCodeServes as the default hash function. (Inherited from Object.)
Public methodGetTypeGets the Type of the current instance. (Inherited from Object.)
Public methodIndexOfReturns the position of a particular member of the collection.
Public methodInsertInserts a WebPartDisplayMode object into the collection at the specified index position.
Public methodRemoveAtRemoves the element at the specified index of the CollectionBase instance. This method is not overridable. (Inherited from CollectionBase.)
Public methodToStringReturns a string that represents the current object. (Inherited from Object.)
Top

  NameDescription
Explicit interface implemetationPrivate methodICollection.CopyToCopies the entire CollectionBase to a compatible one-dimensional Array, starting at the specified index of the target array. (Inherited from CollectionBase.)
Explicit interface implemetationPrivate propertyICollection.IsSynchronizedGets a value indicating whether access to the CollectionBase is synchronized (thread safe). (Inherited from CollectionBase.)
Explicit interface implemetationPrivate propertyICollection.SyncRootGets an object that can be used to synchronize access to the CollectionBase. (Inherited from CollectionBase.)
Explicit interface implemetationPrivate methodIList.AddAdds an object to the end of the CollectionBase. (Inherited from CollectionBase.)
Explicit interface implemetationPrivate methodIList.ContainsDetermines whether the CollectionBase contains a specific element. (Inherited from CollectionBase.)
Explicit interface implemetationPrivate methodIList.IndexOfSearches for the specified Object and returns the zero-based index of the first occurrence within the entire CollectionBase. (Inherited from CollectionBase.)
Explicit interface implemetationPrivate methodIList.InsertInserts an element into the CollectionBase at the specified index. (Inherited from CollectionBase.)
Explicit interface implemetationPrivate propertyIList.IsFixedSizeGets a value indicating whether the CollectionBase has a fixed size. (Inherited from CollectionBase.)
Explicit interface implemetationPrivate propertyIList.IsReadOnlyGets a value indicating whether the CollectionBase is read-only. (Inherited from CollectionBase.)
Explicit interface implemetationPrivate propertyIList.ItemGets or sets the element at the specified index. (Inherited from CollectionBase.)
Explicit interface implemetationPrivate methodIList.RemoveRemoves the first occurrence of a specific object from the CollectionBase. (Inherited from CollectionBase.)
Top

The WebPartDisplayModeCollection class is designed to contain a collection of WebPartDisplayMode objects. It is used primarily by the WebPartManager control to manage collections of WebPartDisplayMode objects.

A display mode is a special view of a Web page that appears when it is assigned as the current display mode on the WebPartManager.DisplayMode property. Display modes are used in the Web Parts control set to create page views in which users can carry out special tasks, such as editing controls, or rearranging the layout of a page. The WebPartManager control defines several display modes, including BrowseDisplayMode, DesignDisplayMode, EditDisplayMode, CatalogDisplayMode, and ConnectDisplayMode. The collection of display modes is referenced by the WebPartManager.DisplayModes property.

On any particular Web page that uses Web Parts controls, only certain display modes are available. The default browse mode and the design mode are nearly always available, but the other display modes are available only if their corresponding zone types are present on the page. For more information, see the WebPartDisplayMode class overview.

The WebPartManager control keeps track of the available display modes on a page with its SupportedDisplayModes property. This property references a WebPartDisplayModeCollection object that contains all the supported display modes.

The WebPartDisplayModeCollection class does not have an exposed constructor, so you cannot create your own new instance of it. If you create a custom WebPartDisplayMode object and want it to be part of the collection of supported display modes in the WebPartManager control, you must inherit from the WebPartManager class, override the CreateDisplayModes method, call the base method to create the collection, and then add any custom display modes to the collection by using its Add method.

The WebPartDisplayModeCollection class has two public properties. The IsReadOnly property is a read-only property that indicates whether the collection is read-only. The overloaded Item property provides access to the members of the collection.

The WebPartDisplayModeCollection class also has several methods. The Add method, already mentioned, enables you to add WebPartDisplayMode objects to the collection. The Contains method determines whether a particular display mode exists in the collection. The CopyTo method copies the collection to an array of objects. The IndexOf method returns the index of a particular display mode within the collection. Finally, the Insert method enables you to insert a display mode object at a particular index in the collection.

The following code example demonstrates working with the WebPartDisplayModeCollection class. The key point is that you must inherit from the WebPartManager class and override the CreateDisplayModes method to add a custom WebPartDisplayMode object to the WebPartDisplayModeCollection collection created by the WebPartManager control.

This code example has five parts:

  • A user control that enables you to change display modes on a Web Parts page.

  • A Web page that hosts the other controls.

  • A user control that resides in a WebPartZone zone on the Web page, and enables you to enter and display text in a label.

  • A source code file that contains two controls. One is a custom WebPartManager control; the other is a custom WebPartDisplayMode object to add to the page's default display modes.

  • An explanation of how the example works.

The source code for the first part of the code example, the user control that lets you change display modes, comes from another topic. For this code example to work, you need to obtain the .ascx file for the user control from the Walkthrough: Changing Display Modes on a Web Parts Page topic, and place the file in the same folder as the .aspx page in this code example.

The second part of the example is the Web page. It contains two WebPartZone controls, both user controls, and the custom WebPartManager control. Notice the Register directives at the top of the page to reference the user controls and namespace for the compiled controls.

<%@ 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>

The third part of the example is the user control for entering and displaying text. Notice that it uses a MultiView control to create multiple views of the user interface (UI). One view is displayed with the button, the other without. Notice that the in the overridden OnPreRender method, the code checks to see whether the page is currently in the custom display mode, and if so, it displays the first view of the user control, which includes the button. If the page is not in the custom display mode (for example, if the page is in browse or design mode), the button is hidden.

Security noteSecurity Note

This example has a text box that accepts user input, which is a potential security threat. By default, ASP.NET Web pages validate that user input does not include script or HTML elements. For more information, see Script Exploits Overview.

<%@ 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>

The fourth part of the example is the source file for the two custom classes. Notice that the custom WebPartManager class overrides the CreateDisplayModes method, calls the base method to add all the default display modes, and then adds the custom display mode. The custom display mode class, InLineEditDisplayMode, simply inherits from WebPartDisplayMode, sets the name of the display mode in the constructor, and overrides a number of the base properties to establish the characteristics of the custom display.

For the code example to run, you must compile this source code. You can compile it explicitly and put the resulting assembly in your Web site's Bin folder or the global assembly cache. Alternatively, you can put the source code in your site's App_Code folder, where it will be dynamically compiled at run time. For a walkthrough that demonstrates how to compile, see 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;
      }
    }

  }

}

To run the code example, load the page in a browser. Notice that the page is currently in browse mode, and no button is visible. Using the Display Mode drop-down list control, change the page to Inline Edit Display mode, and notice that now the button is visible in the lower user control. Add some text, and click the button to update the control. Notice that the page display is returned to browse mode, the text you entered is now displayed, and the button is once again hidden because the page is not in the custom display mode.

.NET Framework

Supported in: 4.6, 4.5, 4, 3.5, 3.0, 2.0

Windows 8.1, Windows Server 2012 R2, Windows 8, Windows Server 2012, Windows 7, Windows Vista SP2, Windows Server 2008 (Server Core Role not supported), Windows Server 2008 R2 (Server Core Role supported with SP1 or later; Itanium not supported)

The .NET Framework does not support all versions of every platform. For a list of the supported versions, see .NET Framework System Requirements.

Any public static (Shared in Visual Basic) members of this type are thread safe. Any instance members are not guaranteed to be thread safe.
Show:
© 2014 Microsoft