使用英语阅读

通过


WebPartManager.ConnectDisplayMode 字段

定义

表示用于显示特殊用户界面 (UI) 以便用户管理 WebPart 控件之间的连接的显示模式。 此字段为只读。

public static readonly System.Web.UI.WebControls.WebParts.WebPartDisplayMode ConnectDisplayMode;

字段值

示例

下面的代码示例演示了 模式的 ConnectDisplayMode 用法。

该代码示例包含三个部分:

  • 包含可以形成连接的接口和自定义 WebPart 控件的源文件。

  • 提供连接 UI 并演示如何使用 模式的 ConnectDisplayMode 网页。

  • 有关如何运行示例的说明。

代码示例的第一部分是一个源文件,其中包含一个接口和两个设计用于连接它们的自定义 WebPart 控件。 若要运行代码示例,必须编译此源代码。 可以显式编译它,并将生成的程序集放入网站的 Bin 文件夹或全局程序集缓存中。 或者,可以将源代码放在站点的“App_Code”文件夹中,并在运行时对其进行动态编译。 此代码示例使用动态编译方法。 有关演示如何编译的演练,请参阅 演练:开发和使用自定义 Web 服务器控件

namespace Samples.AspNet.CS.Controls
{
  using System;
  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;

  [AspNetHostingPermission(SecurityAction.Demand,
    Level = AspNetHostingPermissionLevel.Minimal)]
  [AspNetHostingPermission(SecurityAction.InheritanceDemand,
    Level = AspNetHostingPermissionLevel.Minimal)]
  public interface IZipCode
  {
    string ZipCode { get; set;}
  }

  [AspNetHostingPermission(SecurityAction.Demand,
    Level = AspNetHostingPermissionLevel.Minimal)]
  [AspNetHostingPermission(SecurityAction.InheritanceDemand,
    Level = AspNetHostingPermissionLevel.Minimal)]
  public class ZipCodeWebPart : WebPart, IZipCode
  {
    string zipCodeText = String.Empty;
    TextBox input;
    Button send;

    public ZipCodeWebPart()
    {
    }

    // Make the implemented property personalizable to save 
    // the Zip Code between browser sessions.
    [Personalizable()]
    public virtual string ZipCode
    {
      get { return zipCodeText; }
      set { zipCodeText = value; }
    }

    // This is the callback method that returns the provider.
    [ConnectionProvider("Zip Code", "ZipCodeProvider")]
    public IZipCode ProvideIZipCode()
    {
      return this;
    }

    protected override void CreateChildControls()
    {
      Controls.Clear();
      input = new TextBox();
      this.Controls.Add(input);
      send = new Button();
      send.Text = "Enter 5-digit Zip Code";
      send.Click += new EventHandler(this.submit_Click);
      this.Controls.Add(send);
    }

    private void submit_Click(object sender, EventArgs e)
    {
      if (!string.IsNullOrEmpty(input.Text))
      {
        zipCodeText = Page.Server.HtmlEncode(input.Text);
        input.Text = String.Empty;
      }
    }
  }

  [AspNetHostingPermission(SecurityAction.Demand,
    Level = AspNetHostingPermissionLevel.Minimal)]
  [AspNetHostingPermission(SecurityAction.InheritanceDemand,
    Level = AspNetHostingPermissionLevel.Minimal)]
  public class WeatherWebPart : WebPart
  {
    private IZipCode _provider;
    string _zipSearch;
    Label DisplayContent;

    // This method is identified by the ConnectionConsumer 
    // attribute, and is the mechanism for connecting with 
    // the provider. 
    [ConnectionConsumer("Zip Code", "ZipCodeConsumer")]
    public void GetIZipCode(IZipCode Provider)
    {
      _provider = Provider;
    }
    
    protected override void OnPreRender(EventArgs e)
    {
      EnsureChildControls();

      if (this._provider != null)
      {
        _zipSearch = _provider.ZipCode.Trim();
        DisplayContent.Text = "My Zip Code is:  " + _zipSearch;
      }
    }

    protected override void CreateChildControls()
    {
      Controls.Clear();
      DisplayContent = new Label();
      this.Controls.Add(DisplayContent);
    }
  }
}

该示例的第二部分是承载自定义控件的网页。 在页面上的服务器 <script> 标记中,有几种方法使用页面上可用的显示模式填充下拉列表。 用户可以从下拉列表中选择这些内容以更改页面的显示模式。 其中一种可用的显示模式是连接显示模式,因为 <asp:connectionszone> 元素是在页面的标记中声明的。 请注意,此元素不包含任何其他子元素;它的存在只是为了为用户启用连接管理 UI。

在此示例中,模式 ConnectDisplayMode 显示在两个位置。 首先,在 方法中 Page_Init ,将连接显示模式添加到显示模式的下拉列表中,因为代码会循环访问 属性中 SupportedDisplayModes 引用的集合。 其次, Page_PreRender 方法检查页面上的当前显示模式,如果当前模式为 ConnectDisplayMode,则会在 控件中显示一 Label 条消息。

<%@ Page Language="C#" %>
<%@ Register TagPrefix="aspSample" 
    Namespace="Samples.AspNet.CS.Controls" %>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
    "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<script runat="server">

  protected void Page_Init(object sender, EventArgs e)
  {
    foreach (WebPartDisplayMode mode in mgr.SupportedDisplayModes)
    {
      string modeName = mode.Name;
      if (mode.IsEnabled(mgr))
      {
        ListItem item = new ListItem(modeName, modeName);
        DisplayModeDropdown.Items.Add(item);
      }      
    }
  }

  protected void DisplayModeDropdown_SelectedIndexChanged(object 
    sender, EventArgs e)
  {
    String selectedMode = DisplayModeDropdown.SelectedValue;
    WebPartDisplayMode mode = 
      mgr.SupportedDisplayModes[selectedMode];
    if (mode != null)
      mgr.DisplayMode = mode;
  }

  protected void Page_PreRender(object sender, EventArgs e)
  {
    if (mgr.DisplayMode == WebPartManager.ConnectDisplayMode)
      Label1.Visible = true;
    else
      Label1.Visible = false;
  }
  
</script>

<html xmlns="http://www.w3.org/1999/xhtml" >
<head runat="server">
    <title>ASP.NET Example</title>
</head>
<body>
    <form id="form1" runat="server">
    <div>
      <asp:WebPartManager ID="mgr" runat="server" />    
      <asp:Label ID="Label1" runat="server" 
        Text="Currently in Connect Display Mode" 
        Font-Bold="true"
        Font-Size="125%" />
      <br />
      <asp:DropDownList ID="DisplayModeDropdown" 
        runat="server" 
        AutoPostBack="true"
        Width="120"
        OnSelectedIndexChanged=
        "DisplayModeDropdown_SelectedIndexChanged">
      </asp:DropDownList>
      <hr />
      <asp:WebPartZone ID="WebPartZone1" runat="server">
        <ZoneTemplate>
          <aspSample:ZipCodeWebPart ID="zip1" runat="server"
            Title="Zip Code Provider" />
          <aspSample:WeatherWebPart ID="weather1" runat="server" 
            Title="Zip Code Consumer" />
        </ZoneTemplate>
      </asp:WebPartZone>
      <asp:ConnectionsZone ID="ConnectionsZone1" runat="server" />
    </div>
    </form>
</body>
</html>

在浏览器中加载页面后,单击下拉列表并选择“ 连接 ”,将页面切换到连接显示模式。 请注意,将显示一条消息,告知页面处于连接显示模式。 现在,单击其中一个 WebPart 控件标题栏中) 箭头符号 (谓词菜单,然后单击谓词菜单中的“ 连接 ”。 显示连接 UI 后,单击链接以创建连接。 使用显示的连接 UI 中的下拉列表,选择将参与连接的其他控件,然后单击“ 连接 ”按钮。 已建立连接。 单击“ 关闭 ”按钮,然后使用页面顶部的下拉列表将页面返回到浏览显示模式。

注解

字段ConnectDisplayMode引用控件创建并包含的WebPartManager自定义WebPartDisplayMode对象。 由于这是静态对象,因此可以直接通过 WebPartManager 类引用它,而无需控件的实例。

当用户想要管理网页上的控件之间的连接 WebPart 时,如果已在页面上声明了某个 ConnectionsZone 区域,则可以将页面切换到 模式 ConnectDisplayMode 。 连接显示模式显示用于管理连接的特殊 UI,其中包括连接或断开控件以及编辑现有连接的详细信息的功能。

如果要让用户能够管理与 Web 部件控件集提供的 UI 的连接,则必须在页面的标记中声明元素 <asp:connectionszone> 。 与其他类型的 WebZone 区域的元素不同,无需在此元素中添加任何其他标记;只需自行声明元素。

适用于

产品 版本
.NET Framework 2.0, 3.0, 3.5, 4.0, 4.5, 4.5.1, 4.5.2, 4.6, 4.6.1, 4.6.2, 4.7, 4.7.1, 4.7.2, 4.8, 4.8.1

另请参阅