WebPartConnection WebPartConnection WebPartConnection WebPartConnection Class

Определение

Предоставляет объект, который позволяет двум элементам управления WebPart устанавливать подключение.Provides an object that enables two WebPart controls to form a connection. Этот класс не наследуется.This class cannot be inherited.

public ref class WebPartConnection sealed
[System.ComponentModel.TypeConverter(typeof(System.ComponentModel.ExpandableObjectConverter))]
public sealed class WebPartConnection
type WebPartConnection = class
Public NotInheritable Class WebPartConnection
Наследование
WebPartConnectionWebPartConnectionWebPartConnectionWebPartConnection
Атрибуты

Примеры

В следующем примере кода показано, как создать простое соединение между двумя WebPart элементами управления.The following code example demonstrates how to create a simple connection between two WebPart controls. В примере показано три способа формирования соединения: декларативно, путем размещения тегов для соединения в разметке веб-страницы. программно, путем создания соединения в коде; и через пользовательский интерфейс, поместив ConnectionsZone на страницу элемент управления, который позволяет пользователям устанавливать соединение.The example demonstrates three ways of forming a connection: declaratively, by placing tags for the connection in the markup of the Web page; programmatically, by creating the connection in code; and through the UI, by placing a ConnectionsZone control on the page, which enables users to establish a connection.

Пример кода состоит из четырех частей:The code example has four parts:

  • Пользовательский элемент управления, позволяющий изменять режим просмотра веб-части на странице.A user control that enables you to change the Web Parts display mode on a page.

  • Исходный код для интерфейса и два WebPart элемента управления, выступающих в качестве поставщика и потребителя для соединения.Source code for an interface and two WebPart controls acting as the provider and the consumer for a connection.

  • Веб-страница для размещения всех элементов управления и выполнения примера кода.A Web page to host all the controls and run the code example.

  • Объяснение того, как запустить пример страницы.An explanation of how to run the example page.

Первая часть этого примера кода — это пользовательский элемент управления, позволяющий пользователям изменять режимы экрана на веб-странице.The first part of this code example is the user control that enables users to change display modes on a Web page. Сохраните следующий исходный код в ASCX-файл и присвойте ему имя файла, присвоенное Src атрибуту Register директивы для этого пользовательского элемента управления, который находится ближе к верхней части страницы размещения.Save the following source code to an .ascx file, giving it the file name that is assigned to the Src attribute of the Register directive for this user control, which is near the top of the hosting Web page. Дополнительные сведения о режимах вывода и описание исходного кода в этом элементе управления см. в разделе Пошаговое руководство. Изменение режима экрана на веб-части странице.For details about display modes and a description of the source code in this control, see Walkthrough: Changing Display Modes on a Web Parts Page.

<%@ 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>
<%@ control language="vb" classname="DisplayModeMenuVB"%>
<script runat="server">
  ' Use a field to reference the current WebPartManager.
  Dim _manager As WebPartManager

  Sub Page_Init(ByVal sender As Object, ByVal e As EventArgs)
    AddHandler Page.InitComplete, AddressOf InitComplete
  End Sub

  Sub InitComplete(ByVal sender As Object, ByVal e As System.EventArgs)
    _manager = WebPartManager.GetCurrentWebPartManager(Page)
      
    Dim browseModeName As String = WebPartManager.BrowseDisplayMode.Name
      
    ' Fill the dropdown with the names of supported display modes.
    Dim mode As WebPartDisplayMode
    For Each mode In _manager.SupportedDisplayModes
      Dim modeName As String = mode.Name
      ' Make sure a mode is enabled before adding it.
      If mode.IsEnabled(_manager) Then
        Dim item As New ListItem(modeName, modeName)
        DisplayModeDropdown.Items.Add(item)
      End If
    Next mode
      
    ' 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 Then
      Panel2.Visible = True
      If _manager.Personalization.Scope = PersonalizationScope.User Then
        RadioButton1.Checked = True
      Else
        RadioButton2.Checked = True
      End If
    End If
   
  End Sub

  ' Change the page to the selected display mode.
  Sub DisplayModeDropdown_SelectedIndexChanged(ByVal sender As Object, _
    ByVal e As EventArgs)
    
    Dim selectedMode As String = DisplayModeDropdown.SelectedValue   
    Dim mode As WebPartDisplayMode = _
      _manager.SupportedDisplayModes(selectedMode)
    If Not (mode Is Nothing) Then
      _manager.DisplayMode = mode
    End If

  End Sub
   
  ' Set the selected item equal to the current display mode.
  Sub Page_PreRender(ByVal sender As Object, ByVal e As EventArgs)
    Dim items As ListItemCollection = DisplayModeDropdown.Items
    Dim selectedIndex As Integer = _
      items.IndexOf(items.FindByText(_manager.DisplayMode.Name))
    DisplayModeDropdown.SelectedIndex = selectedIndex

  End Sub

  ' Reset all of a user's personalization data for the page.
  Protected Sub LinkButton1_Click(ByVal sender As Object, _
    ByVal e As EventArgs)
    
    _manager.Personalization.ResetPersonalizationState()
    
  End Sub

  ' If not in User personalization scope, toggle into it.
  Protected Sub RadioButton1_CheckedChanged(ByVal sender As Object, _
    ByVal e As EventArgs)
    
    If _manager.Personalization.Scope = PersonalizationScope.Shared Then
      _manager.Personalization.ToggleScope()
    End If

  End Sub
   
  ' If not in Shared scope, and if user is allowed, toggle the scope.
  Protected Sub RadioButton2_CheckedChanged(ByVal sender As Object, _
    ByVal e As EventArgs)
    
    If _manager.Personalization.CanEnterSharedScope AndAlso _
      _manager.Personalization.Scope = PersonalizationScope.User Then
      _manager.Personalization.ToggleScope()
    End If

  End Sub

</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>

Вторая часть примера кода — это исходный код для интерфейса и элементов управления.The second part of the code example is the source code for the interface and controls. Исходный файл содержит простой интерфейс с именем IZipCode.The source file contains a simple interface named IZipCode. Также WebPart существует класс с именем ZipCodeWebPart , который реализует интерфейс и выступает в качестве элемента управления поставщика.There is also a WebPart class named ZipCodeWebPart that implements the interface and acts as the provider control. Его ProvideIZipCode метод — это метод обратного вызова, реализующий член интерфейса.Its ProvideIZipCode method is the callback method that implements the interface's only member. Метод просто возвращает экземпляр интерфейса.The method simply returns an instance of the interface. Обратите внимание, что метод помечен ConnectionProvider атрибутом в его метаданных.Note that the method is marked with a ConnectionProvider attribute in its metadata. Это механизм идентификации метода в качестве метода обратного вызова для точки соединения поставщика.This is the mechanism for identifying the method as the callback method for the provider's connection point. Другой WebPart классWeatherWebPartназывается, и он выступает в качестве потребителя для соединения.The other WebPart class is named WeatherWebPart, and it acts as the consumer for the connection. Этот класс имеет метод с именем GetZipCode , который получает экземпляр IZipCode интерфейса из элемента управления поставщика.This class has a method named GetZipCode that gets an instance of the IZipCode interface from the provider control. Обратите внимание, что этот метод помечен как метод точки подключения потребителя с ConnectionConsumer атрибутом в его метаданных.Note that this method is marked as the consumer's connection point method with a ConnectionConsumer attribute in its metadata.

Для выполнения примера кода необходимо скомпилировать этот исходный код.For the code example to run, you must compile this source code. Его можно скомпилировать явным образом и разместить полученную сборку в папке Bin веб-сайта или в глобальном кэше сборок.You can compile it explicitly and put the resulting assembly in your Web site's Bin folder or the global assembly cache. Кроме того, можно разместить исходный код в папке App_Code сайта, где он будет динамически компилироваться во время выполнения.Alternatively, you can put the source code in your site's App_Code folder, where it will be dynamically compiled at run time. В этом примере кода используется динамическая компиляция.This code example uses dynamic compilation. Пошаговое руководство, в котором демонстрируется компиляция , см. в разделе Пошаговое руководство. Разработка и использование пользовательского серверного веб-элемента управления.For a walkthrough that demonstrates how to compile, see Walkthrough: Developing and Using a Custom Web Server Control.

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 Provider", "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 Consumer", "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);
    }

  }
}
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 Interface IZipCode

    Property ZipCode() As String

  End Interface

  <AspNetHostingPermission(SecurityAction.Demand, _
    Level:=AspNetHostingPermissionLevel.Minimal)> _
  <AspNetHostingPermission(SecurityAction.InheritanceDemand, _
    Level:=AspNetHostingPermissionLevel.Minimal)> _
  Public Class ZipCodeWebPart
    Inherits WebPart
    Implements IZipCode
    Private zipCodeText As String = String.Empty
    Private input As TextBox
    Private send As Button

    Public Sub New()
    End Sub

    ' Make the implemented property personalizable to save 
    ' the Zip Code between browser sessions.
    <Personalizable()> _
    Public Property ZipCode() As String _
      Implements IZipCode.ZipCode

      Get
        Return zipCodeText
      End Get
      Set(ByVal value As String)
        zipCodeText = value
      End Set
    End Property

    ' This is the callback method that returns the provider.
    <ConnectionProvider("Zip Code Provider", "ZipCodeProvider")> _
    Public Function ProvideIZipCode() As IZipCode
      Return Me
    End Function


    Protected Overrides Sub CreateChildControls()
      Controls.Clear()
      input = New TextBox()
      Me.Controls.Add(input)
      send = New Button()
      send.Text = "Enter 5-digit Zip Code"
      AddHandler send.Click, AddressOf Me.submit_Click
      Me.Controls.Add(send)

    End Sub


    Private Sub submit_Click(ByVal sender As Object, _
      ByVal e As EventArgs)

      If input.Text <> String.Empty Then
        zipCodeText = Page.Server.HtmlEncode(input.Text)
        input.Text = String.Empty
      End If

    End Sub

  End Class

  <AspNetHostingPermission(SecurityAction.Demand, _
    Level:=AspNetHostingPermissionLevel.Minimal)> _
  <AspNetHostingPermission(SecurityAction.InheritanceDemand, _
    Level:=AspNetHostingPermissionLevel.Minimal)> _
  Public Class WeatherWebPart
    Inherits WebPart
    Private _provider As IZipCode
    Private _zipSearch As String
    Private DisplayContent As Label

    ' This method is identified by the ConnectionConsumer 
    ' attribute, and is the mechanism for connecting with 
    ' the provider. 
    <ConnectionConsumer("Zip Code Consumer", "ZipCodeConsumer")> _
    Public Sub GetIZipCode(ByVal Provider As IZipCode)
      _provider = Provider
    End Sub


    Protected Overrides Sub OnPreRender(ByVal e As EventArgs)
      EnsureChildControls()

      If Not (Me._provider Is Nothing) Then
        _zipSearch = _provider.ZipCode.Trim()
				DisplayContent.Text = "My Zip Code is:  " + _zipSearch
      End If

    End Sub

    Protected Overrides Sub CreateChildControls()
      Controls.Clear()
      DisplayContent = New Label()
      Me.Controls.Add(DisplayContent)

    End Sub

  End Class

End Namespace

Третья часть примера кода — веб-страница.The third part of the code example is the Web page. Ближе к началу представлены Register директивы пользовательского элемента управления и пользовательских WebPart элементов управления.Near the top are the Register directives for the user control and the custom WebPart controls. Поскольку в примере предполагается динамическая компиляция элементов управления, исходный код для элементов управления должен находиться в вложенной папке App_Code. Register тег на странице ссылается только на произвольный префикс тега и пространство имен элементов управления.Because the example assumes dynamic compilation of the controls, the source code for the controls should be in an App_Code subfolder; the Register tag in the page references only an arbitrary tag prefix and the namespace of the controls. Пользовательские WebPart элементы управления (поставщик и потребитель) объявляются внутри <asp:webpartzone> элемента веб-страницы внутри <zonetemplate> элемента.The custom WebPart controls (the provider and consumer) are declared within the Web page's <asp:webpartzone> element, inside a <zonetemplate> element.

Страница предоставляет три способа формирования соединения между пользовательскими элементами управления.The page provides three ways to form a connection between the custom controls. Первый метод является декларативным.The first method is declarative. В разметке для страницы <StaticConnections> объявляется элемент, а внутри этого <asp:WebPartConnections> элемента — различные сведения о потребителе и поставщике соединения, заданные в качестве атрибутов.In the markup for the page, a <StaticConnections> element is declared, and within that is an <asp:WebPartConnections> element, with the various consumer and provider details of the connection specified as attributes. Это один из способов создания соединения путем его объявления непосредственно на веб-странице, в частности <asp:WebPartManager> в элементе.This is one way to create a connection, by declaring it directly in the Web page, specifically within the <asp:WebPartManager> element. Из-за этого статического соединения соединение между двумя пользовательскими элементами управления создается сразу же при первой загрузке страницы.Because of this static connection, a connection between the two custom controls is created immediately the first time the page loads.

Второй способ формирования соединения между элементами управления обеспечивается <asp:connectionszone> элементом на странице.A second method for forming a connection between the controls is provided by the <asp:connectionszone> element in the page. Если пользователь переключает страницу в режим отображения соединения во время выполнения и щелкает команду подключения в одном из пользовательских элементов управления, <asp:connectionszone> элемент автоматически отображает пользовательский интерфейс для создания соединения.If a user switches a page into connect display mode at run time, and clicks a connect verb on one of the custom controls, the <asp:connectionszone> element automatically renders the UI for creating a connection.

На странице также демонстрируется третий способ создания соединения, который предназначен для программного выполнения.The page also demonstrates a third way of creating a connection, which is to do it programmatically. В методе код ProviderConnectionPoint создает объект для элемента управления поставщика и получает его сведения о GetProviderConnectionPoints точке подключения, вызывая метод. Button1_ClickIn the Button1_Click method, the code creates a ProviderConnectionPoint object for the provider control, and retrieves its connection point details by calling the GetProviderConnectionPoints method. Он выполняет аналогичную задачу для элемента управления потребителя, вызывая GetConsumerConnectionPoints метод.It carries out a similar task for the consumer control, calling the GetConsumerConnectionPoints method. Наконец, он создает новый WebPartConnection объект, ConnectWebParts вызывая метод для WebPartManager элемента управления.Finally, it creates the new WebPartConnection object by calling the ConnectWebParts method on the WebPartManager control.

<%@ Page Language="C#" %>
<%@ Register TagPrefix="uc1" 
    TagName="DisplayModeMenuCS"
    Src="~/displaymodemenucs.ascx" %>
<%@ 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 Button1_Click(object sender, EventArgs e)
  {
    ProviderConnectionPoint provPoint = 
      mgr.GetProviderConnectionPoints(zip1)["ZipCodeProvider"];
    ConsumerConnectionPoint connPoint = 
      mgr.GetConsumerConnectionPoints(weather1)["ZipCodeConsumer"];
    WebPartConnection conn1 = mgr.ConnectWebParts(zip1, provPoint,
      weather1, connPoint);
  }

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

<html xmlns="http://www.w3.org/1999/xhtml" >
<head runat="server">
    <title>Untitled Page</title>
</head>
<body>
    <form id="form1" runat="server">
    <div>
      <asp:WebPartManager ID="mgr" runat="server" 
    OnDisplayModeChanged="mgr_DisplayModeChanged">
        <StaticConnections>
          <asp:WebPartConnection ID="conn1"
            ConsumerConnectionPointID="ZipCodeConsumer"
            ConsumerID="weather1"
            ProviderConnectionPointID="ZipCodeProvider"
            ProviderID="zip1" />
        </StaticConnections>
      </asp:WebPartManager>
      <uc1:DisplayModeMenuCS ID="menu1" runat="server" />
      <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">
      </asp:ConnectionsZone>
      <asp:Button ID="Button1" runat="server" 
        Text="Connect WebPart Controls" 
        OnClick="Button1_Click" 
    Visible="false" />
    </div>
    </form>
</body>
</html>
<%@ Page Language="vb" %>
<%@ Register TagPrefix="uc1" 
    TagName="DisplayModeMenuVB"
    Src="~/displaymodemenuvb.ascx" %>
<%@ Register TagPrefix="aspSample" 
    Namespace="Samples.AspNet.VB.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 Sub Button1_Click(ByVal sender As Object, _
    ByVal e As System.EventArgs)
    
    Dim provPoint As ProviderConnectionPoint = _
      mgr.GetProviderConnectionPoints(zip1)("ZipCodeProvider")
    Dim connPoint As ConsumerConnectionPoint = _
      mgr.GetConsumerConnectionPoints(weather1)("ZipCodeConsumer")
    mgr.ConnectWebParts(zip1, provPoint, weather1, connPoint)

  End Sub

  Protected Sub mgr_DisplayModeChanged (ByVal sender as Object, _
    ByVal e as WebPartDisplayModeEventArgs)

    If mgr.DisplayMode Is WebPartManager.ConnectDisplayMode Then
    Button1.Visible = True
    Else
    Button1.Visible = False
    End If

  End Sub
</script>

<html xmlns="http://www.w3.org/1999/xhtml" >
<head runat="server">
    <title>Untitled Page</title>
</head>
<body>
    <form id="form1" runat="server">
    <div>
      <asp:WebPartManager ID="mgr" runat="server" 
    OnDisplayModeChanged="mgr_DisplayModeChanged">
        <StaticConnections>
          <asp:WebPartConnection ID="conn1"
            ConsumerConnectionPointID="ZipCodeConsumer"
            ConsumerID="weather1"
            ProviderConnectionPointID="ZipCodeProvider"
            ProviderID="zip1" />
        </StaticConnections>
      </asp:WebPartManager>
      <uc1:DisplayModeMenuVB ID="menu1" runat="server" />
      <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">
      </asp:ConnectionsZone>
      <asp:Button ID="Button1" runat="server" 
        Text="Connect WebPart Controls" 
        OnClick="Button1_Click" 
    Visible="false" />
    </div>
    </form>
</body>
</html>

После загрузки веб-страницы в браузере первое соединение уже существует, так как оно объявлено в <StaticConnections> элементе.After you load the Web page in a browser, the first connection already exists because it is declared within the <StaticConnections> element. Введите текст в элементе управления поставщика почтовых индексов, который будет отображаться в элементе управления потребителя.Enter some text in the ZIP Code Provider control, and it will be displayed in the consumer control. Затем отключите два элемента управления.Next, disconnect the two controls. С помощью раскрывающегося списка режим экрана измените страницу на режим экрана подключения.Using the Display Mode drop-down list control, change the page to connect display mode. Щелкните меню глаголы (представленное стрелкой вниз в заголовке окна) для каждого элемента WebPart управления и обратите внимание, что каждый из них имеет параметр Connect .Click the verbs menu (represented by a downward arrow in the title bar) for each of the WebPart controls, and notice that each has a Connect option. Это команда подключения, которая отображается в меню команд только в том случае, если страница находится в режиме соединения.This is a connect verb, which appears in the verbs menu only when the page is in connect mode. Щелкните команду подключения на одном из элементов управления, и появится пользовательский интерфейс подключения, предоставленный ConnectionsZone элементом управления.Click the connect verb on one of the controls, and the connection UI provided by the ConnectionsZone control appears. Нажмите кнопку Disconnect (отключить ), чтобы завершить статическое подключение между элементами управления.Click the Disconnect button to end the static connection between the controls. Используйте элемент управления " режим отображения ", чтобы вернуть страницу в режим просмотра.Use the Display Mode control to return the page to browse mode. Попробуйте еще раз ввести новый текст в поставщик, и обратите внимание, что поскольку элементы управления отключены, текст не обновляется в элементе управления получателя.Try to enter some new text in the provider again, and note that because the controls are disconnected, the text fails to update in the consumer control.

Затем используйте тот же метод, что и выше, чтобы снова переключить страницу в режим экрана подключения.Next, use the same method as above to switch the page into connect display mode again. Щелкните команду подключения на одном из элементов управления.Click a connect verb on one of the controls. Щелкните ссылку создать соединение и используйте пользовательский интерфейс, предоставленный ConnectionsZone элементом управления, чтобы создать подключение между элементами управления.Click the Create a Connection link, and use the UI provided by the ConnectionsZone control to create a connection between the controls. Это второй способ создания соединения.This is the second method for creating a connection. Обратите внимание, что как только соединение сформировано, последняя строка, введенная в элементе управления поставщика (которая не отображалась из-за отключения элементов управления), внезапно появляется в потребителе, так как соединение было создано повторно.Note that as soon as the connection is formed, the last string you entered in the provider control (that failed to appear because the controls were disconnected) suddenly appears in the consumer, because the connection has been recreated. Нажмите кнопку Отключить , чтобы завершить текущее подключение, которое вы только что создали.Click the Disconnect button to end the current connection that you just created. Возврат страницы в режим просмотра.Return the page to browse mode. Введите новый текст в поставщике, чтобы показать, что текст не обновлен и элементы управления снова отключены.Enter some new text in the provider to demonstrate that the text is not updated, and that the controls are again disconnected.

Возврат страницы в режим отображения подключения.Return the page to connect display mode. Вместо того чтобы щелкнуть команду подключения, нажмите кнопку Connect WebPart Controls (соединить элементы управления ), которая иллюстрирует третий способ формирования соединения.Instead of clicking a connect verb, click the Connect WebPart Controls button, which illustrates the third method of forming a connection. Этот подход позволяет программно соединить элементы управления за один простой шаг без использования ConnectionsZone элемента управления.This approach connects the controls programmatically in one simple step without having to use the ConnectionsZone control. Обратите внимание, что при создании соединения последняя строка, введенная в поставщике, внезапно появляется в элементе управления потребителя.Note that as the connection is created, the last string you entered in the provider suddenly appears in the consumer control.

Комментарии

В наборе элементов управления веб-части соединение — это связь или связь между двумя WebPart (или другими серверными или пользовательскими) элементами управления, позволяющими им обмениваться данными.In the Web Parts control set, a connection is a link or association between two WebPart (or other server or user) controls that enables them to share data. Эта возможность совместного использования данных позволяет использовать подключенные элементы управления в целях, превышающих функциональные возможности, предоставляемые изолированными элементами управления.This ability to share data allows connected controls to be used in ways that exceed the functionality offered by the isolated controls. Например, если один элемент управления предоставляет данные почтового индекса, а другой элемент управления может считывать эти данные и предоставлять информацию о погоде на основе почтового индекса, то возможность подключения двух элементов управления предоставляет пользователям больше возможностей.For example, if one control provides postal code data, and another control can read that data and provide local weather information based on the postal code, then the connected capability of the two controls provides more value to users. Чтобы расширить этот пример, можно создать другие элементы управления, которые также отображают информацию на основе почтового индекса, например элемент управления со ссылками на местные новости, и все эти элементы управления, которые могут работать с данными почтовых индексов, могут обмениваться данными с одним элементом управления, предоставляющим почтовый индекс.To extend this example, other controls could be created that also display information based on a postal code, such as a control with links to local news, and all these controls that can work with postal code data could share data with the single control that provides a postal code. Конечные пользователи веб-части приложений могут создавать подключения между всеми совместимыми элементами управления и управлять ими непосредственно из веб-браузера, используя стандартный пользовательский интерфейс подключений, предоставляемый ConnectionsZone элементом управления, или пользовательский интерфейс, предоставляемый Developer.End users of Web Parts applications can create and manage connections between all such compatible controls directly from a Web browser, using the standard connections user interface (UI) provided by the ConnectionsZone control, or using a custom UI provided by a developer.

В WebPartConnection этом обзоре класса приведена общая инструкция основных сведений о создании соединения.This WebPartConnection class overview is a general statement of the basic details for creating a connection. Дополнительные сведения о конкретных компонентах и требованиях, связанных с созданием подключений, см. в разделе веб-части Connections Overviewили просмотрите справочные классы и примеры кода, упомянутые в следующем обсуждении.For more on specific components and requirements involved in creating connections, see Web Parts Connections Overview, or see the reference classes and code examples mentioned in the following discussion. Существует несколько фундаментальных аспектов веб-части подключения.There are several fundamental aspects of a Web Parts connection:

  • Два WebPart элемента управления.Two WebPart controls. Каждое подключение веб-части состоит из двух элементов управления.Every Web Parts connection consists of two controls. Элемент управления может участвовать в нескольких соединениях одновременно, но каждое отдельное соединение состоит только из двух элементов управления.It is possible for a control to participate in more than one connection simultaneously, but every single connection consists of exactly two controls. Элементы управления могут быть производными непосредственно от WebPart базового класса или могут быть другими серверными элементами управления, включая элементы управления ASP.NET, пользовательские серверные элементы управления и пользовательские элементы управления.The controls can derive directly from the WebPart base class, or they can be other server controls, including ASP.NET controls, custom server controls, and user controls. Элементы управления, которые не являются производными WebPart от класса, если GenericWebPart они помещены WebPartZoneBase в зону, автоматически упаковываются вместе с объектом во время выполнения WebPart , что позволяет им наследовать от класса и функционировать как время WebPart выполнения. элементы управления.Controls that do not derive from the WebPart class, if placed in a WebPartZoneBase zone, are automatically wrapped with a GenericWebPart object at run time, which enables them to inherit from the WebPart class and function as run-time WebPart controls.

  • Элементы управления, находящиеся в WebPartZoneBase зонах.Controls residing in WebPartZoneBase zones. Как WebPart элементы управления, так и другие типы серверных элементов управления должны WebPartZoneBase находиться в зоне, чтобы принимать участие в веб-части подключениях (и большинство других веб-частиных функций).Both WebPart controls and any other type of server control must reside in a WebPartZoneBase zone to be able to participate in Web Parts connections (and most other Web Parts features).

  • Потребители и поставщики.Consumers and providers. В каждом подключении веб-части существует два элемента управления: поставщик данных и потребитель данных.In every Web Parts connection there are two controls: a provider of data and a consumer of data. Поставщик подает данные потребителю через указанный метод обратного вызова, который возвращает данные в форме интерфейса.The provider furnishes data to the consumer through a specified callback method that returns data in the form of an interface. (Пример создания и указания метода обратного вызова см. в подразделе «Пример» этого раздела.) Этот метод обратного вызова называется точкой подключения поставщика.(For an example of how to create and specify the callback method, see the Example section of this topic.) This callback method is known as a provider connection point. Сведения об этой точке подключения (ее понятное имя, идентификатор и тип возвращаемого интерфейса) содержатся в ProviderConnectionPoint объекте, связанном с элементом управления поставщика.The details of this connection point (its "friendly" name, an ID, and the type of the returned interface) are contained in a ProviderConnectionPoint object associated with the provider control. Потребитель получает данные с помощью указанного метода, который может принимать экземпляр интерфейса.The consumer receives the data through a specified method that can accept an instance of the interface. Этот метод известен как точка подключения потребителя, а сведения о точке подключения (имя, идентификатор и тип интерфейса) содержатся в ConsumerConnectionPoint объекте, связанном с элементом управления потребителя.This method is known as a consumer connection point, and the details of the connection point (name, ID, and type of interface) are contained in a ConsumerConnectionPoint object associated with the consumer control.

  • Совместимые элементы управления или допустимый преобразователь.Compatible controls or a valid transformer. Чтобы соединение работало, потребитель и поставщик должны быть совместимыми (это означает, что их определенные методы точек соединения могут работать с одним и тем же типом интерфейса) или должен быть WebPartTransformer объект, способный переносить тип, предоставляемый в тип, понятный потребителю.For a connection to work, the consumer and provider must either be compatible (meaning that their specified connection point methods can work with the same type of interface), or there must be a WebPartTransformer object capable of translating the type offered by the provider into a type understood by the consumer.

  • Объект WebPartConnection.A WebPartConnection object. Для существующего соединения должен существовать экземпляр WebPartConnection класса, который содержит ссылки на элементы управления поставщика и потребителя, а также сведения о точках соединения.For a connection to exist, there must be an instance of the WebPartConnection class that contains references to the provider and consumer controls, along with the details of their connection points. Если поставщик и потребитель несовместимы и вместо этого используют WebPartTransformer объект для подключения, соединение ссылается на преобразователь.If the provider and consumer are incompatible and instead use a WebPartTransformer object to connect, the connection references the transformer.

  • Способ установления соединения.A means of establishing the connection. После того, как совместимые элементы управления потребителя и поставщика были правильно спроектированы с помощью методов точек подключения и помещены в зону, а WebPartConnection объект доступен, последний основной шаг необходим для инициации соединения.After compatible consumer and provider controls have been properly designed with connection point methods and placed in a zone, and a WebPartConnection object is available, the last basic step necessary is to initiate the connection. Это может быть вызвано тем, что пользователи могут создавать подключение через пользовательский интерфейс.One way this can happen is for users to create the connection through the UI. Если поместить <asp:connectionszone> элемент на страницу и другие необходимые компоненты для соединения, во время выполнения пользователь может переключить страницу в режим экрана подключения, щелкнуть команду подключения в меню команд поставщика или потребителя. и появится пользовательский интерфейс подключения (на основе ConnectionsZone элемента управления).If you place an <asp:connectionszone> element on the page, and the other required components for a connection are in place, at run time a user can switch the page into connect display mode, click a connect verb on the verbs menu of either the provider or consumer, and a connection UI (based on the ConnectionsZone control) will appear. Через этот пользовательский интерфейс пользователь может инициировать подключение.Through this UI, the user can initiate the connection. Другой способ инициировать подключение — это сделать это программным способом.Another way to initiate the connection is to do it programmatically. В любом случае, через пользовательский интерфейс или программным способом, базовый метод, инициирующий соединение, будет одинаковым.In either case, whether through the UI or programmatically, the underlying method that initiates the connection is the same. Приложение вызывает ConnectWebParts метод ( ConnectWebParts или метод при использовании преобразователя) для WebPartManager элемента управления, передавая ему поставщик, потребитель и соответствующие объекты WebPartConnection точек соединения, и метод возвращает объектами.The application calls the ConnectWebParts method (or the ConnectWebParts method if using a transformer) on the WebPartManager control, passing to it the provider, the consumer, and their respective connection point objects, and the method returns a WebPartConnection object.

Класс определяет объект, инкапсулирующий базовые сведения о соединении между двумя WebPart элементами управления. WebPartConnectionThe WebPartConnection class defines an object that encapsulates the essential details of a connection between two WebPart controls. Класс содержит почти все свойства, связанные с подробными сведениями о конкретном соединении.The class consists almost entirely of properties related to the details of a particular connection. Некоторые свойства касаются элемента управления получателя в соединении.Several properties concern the consumer control in a connection. Свойство ссылается на сам элемент управления потребителя, ConsumerID а свойство ссылается на идентификатор потребителя. ConsumerThe Consumer property references the consumer control itself, and the ConsumerID property references the consumer's ID. На объект, содержащий сведения о точке подключения потребителя, ссылается ConsumerConnectionPoint свойство потребителя. ConsumerConnectionPointThe ConsumerConnectionPoint object, which contains the details of the consumer's connection point, is referenced by the consumer's ConsumerConnectionPoint property. Свойство ссылается на идентификатор ConsumerConnectionPoint объекта. ConsumerConnectionPointIDThe ConsumerConnectionPointID property references the ID of the ConsumerConnectionPoint object. Всем этим свойствам подключения, связанным с потребителем, должно быть назначено значение для создания соединения.All these consumer-related connection properties must have a value assigned to them to create a connection.

WebPartConnection Класс также имеет несколько свойств, связанных с элементом управления поставщика в соединении, и они соответствуют свойствам потребителя.The WebPartConnection class also has several properties that relate to the provider control in a connection, and these correspond to the properties for a consumer. Свойство ссылается на сам элемент управления поставщика, ProviderID а свойство ссылается на его идентификатор. ProviderThe Provider property references the provider control itself, while the ProviderID property references its ID. Свойство ссылается на ProviderConnectionPointID объект, а свойство ссылается на идентификатор точки соединения поставщика. ProviderConnectionPoint ProviderConnectionPointThe ProviderConnectionPoint property references the ProviderConnectionPoint object, and the ProviderConnectionPointID property references the ID of the provider's connection point.

Некоторые свойства касаются состояния соединения.Several properties concern the state of the connection. IsActive Свойство указывает, является ли соединение активным (в настоящее время выполняется обмен данными) или неактивным (все еще подключенные, но не имеющие общего доступа к данным).The IsActive property indicates whether the connection is active (currently exchanging data) or inactive (still connected but not actively sharing data). Свойство указывает, является ли соединение общим (доступным для всех пользователей страницы) или пользовательским соединением, IsStatic а свойство указывает, является ли элемент управления статическим (объявленным в разметке страницы и, таким является, постоянным) или IsShared Dynamic (создается программно, то есть может быть удалено).The IsShared property indicates whether the connection is a shared (available to all users of a page) or a user-specific connection, and the IsStatic property indicates whether the control is static (declared in the page markup and thus permanent) or dynamic (created programmatically, meaning that it can be deleted).

Конструкторы

WebPartConnection() WebPartConnection() WebPartConnection() WebPartConnection()

Инициализирует новый экземпляр класса WebPartConnection.Initializes a new instance of the WebPartConnection class.

Свойства

Consumer Consumer Consumer Consumer

Получает объект WebPart, который функционирует в подключении как элементу правления получателя.Gets a WebPart object that is acting as the consumer control in a connection.

ConsumerConnectionPoint ConsumerConnectionPoint ConsumerConnectionPoint ConsumerConnectionPoint

Получает объект, который служит в качестве точки подключения для элементов управления, функционирующих в подключении в качестве получателя.Gets the object that serves as a connection point for a control that is acting as a consumer in a connection.

ConsumerConnectionPointID ConsumerConnectionPointID ConsumerConnectionPointID ConsumerConnectionPointID

Получает или задает значение свойства для подключения, которое ссылается на идентификатор объекта, служащего в качестве точки подключения получателя для этого подключения.Gets or sets the property value on a connection that references the ID of the object serving as the consumer connection point for that connection.

ConsumerID ConsumerID ConsumerID ConsumerID

Получает или задает значение свойства для подключения, которое ссылается на идентификатор элемента управления WebPart, функционирующего в качестве получателя для этого подключения.Gets or sets the property value on a connection that references the ID of the WebPart control acting as a consumer for that connection.

ID ID ID ID

Получает или задает идентификатор объекта WebPartConnection.Gets or sets the ID of a WebPartConnection object.

IsActive IsActive IsActive IsActive

Получает значение, которое указывает, существует ли в настоящее время объект WebPartConnection и способен ли передавать данные между элементами управления поставщика и получателя.Gets a value that indicates whether a WebPartConnection object is currently established and able to exchange data between its provider and consumer controls.

IsShared IsShared IsShared IsShared

Получает значение, указывающее, является ли объект WebPartConnection видимым для всех пользователей или же только для текущего пользователя.Gets a value that indicates whether a WebPartConnection object is visible to all users or only to the current user.

IsStatic IsStatic IsStatic IsStatic

Получает значение, указывающее, объявлен ли объект WebPartConnection в разметке веб-страницы или же создан программным способом.Gets a value that indicates whether a WebPartConnection object is declared in the markup of a Web page, or created programmatically.

Provider Provider Provider Provider

Получает элемент управления WebPart, который функционирует как поставщик в подключении веб-частей.Gets a WebPart control that acts as the provider in a Web Parts connection.

ProviderConnectionPoint ProviderConnectionPoint ProviderConnectionPoint ProviderConnectionPoint

Получает объект, который служит как точка подключения для элемента управления WebPart, выполняющего функцию поставщика в подключении.Gets the object that serves as a connection point for a WebPart control acting as a provider for a connection.

ProviderConnectionPointID ProviderConnectionPointID ProviderConnectionPointID ProviderConnectionPointID

Получает или задает значение свойства для подключения, которое ссылается на идентификатор объекта, выполняющего роль точки подключения поставщика для этого подключения.Gets or sets the property value on a connection that references the ID of the object serving as the provider connection point for that connection.

ProviderID ProviderID ProviderID ProviderID

Получает или задает значение свойства для подключения, которое ссылается на идентификатор элемента управления WebPart, выполняющего роль поставщика для этого подключения.Gets or sets the property value on a connection that references the ID of the WebPart control acting as a provider for that connection.

Transformer Transformer Transformer Transformer

Получает объект WebPartTransformer, который используется для преобразования данных между двумя несовместимыми точками подключения в подключении веб-частей.Gets a WebPartTransformer object that is used to transform data between two otherwise incompatible connection points in a Web Parts connection.

Transformers Transformers Transformers Transformers

Получает коллекцию WebPartTransformer объектов, используемых внутренне набором элементов управления веб-частей.Gets a collection of WebPartTransformer objects used internally by the Web Parts control set.

Методы

Equals(Object) Equals(Object) Equals(Object) Equals(Object)

Определяет, равен ли заданный объект текущему объекту.Determines whether the specified object is equal to the current object.

(Inherited from Object)
GetHashCode() GetHashCode() GetHashCode() GetHashCode()

Служит хэш-функцией по умолчанию.Serves as the default hash function.

(Inherited from Object)
GetType() GetType() GetType() GetType()

Возвращает объект Type для текущего экземпляра.Gets the Type of the current instance.

(Inherited from Object)
MemberwiseClone() MemberwiseClone() MemberwiseClone() MemberwiseClone()

Создает неполную копию текущего объекта Object.Creates a shallow copy of the current Object.

(Inherited from Object)
ToString() ToString() ToString() ToString()

Переопределяет унаследованный метод ToString() и возвращает краткое имя типа для объекта подключения.Overrides the inherited ToString() method and returns a short type name for the connection object.

Применяется к

Дополнительно