Sdílet prostřednictvím


WebPartConnection Třída

Definice

Poskytuje objekt, který umožňuje dvěma WebPart ovládacím prvkům vytvořit připojení. Tuto třídu nelze zdědit.

public ref class WebPartConnection sealed
[System.ComponentModel.TypeConverter(typeof(System.ComponentModel.ExpandableObjectConverter))]
public sealed class WebPartConnection
[<System.ComponentModel.TypeConverter(typeof(System.ComponentModel.ExpandableObjectConverter))>]
type WebPartConnection = class
Public NotInheritable Class WebPartConnection
Dědičnost
WebPartConnection
Atributy

Příklady

Následující příklad kódu ukazuje, jak vytvořit jednoduché propojení mezi dvěma WebPart ovládacími prvky. Příklad ukazuje tři způsoby vytvoření připojení: deklarativním umístěním značek pro připojení do značky webové stránky; prostřednictvím kódu programu vytvořením připojení v kódu; a prostřednictvím uživatelského rozhraní umístěním ConnectionsZone ovládacího prvku na stránku, který umožňuje uživatelům navázat připojení.

Příklad kódu má čtyři části:

  • Uživatelský ovládací prvek, který umožňuje změnit režim zobrazení webových částí na stránce.

  • Zdrojový kód pro rozhraní a dva WebPart ovládací prvky, které fungují jako zprostředkovatel a příjemce připojení.

  • Webová stránka pro hostování všech ovládacích prvků a spuštění příkladu kódu.

  • Vysvětlení způsobu spuštění ukázkové stránky

První část tohoto příkladu kódu je uživatelský ovládací prvek, který uživatelům umožňuje změnit režimy zobrazení na webové stránce. Uložte následující zdrojový kód do souboru .ascx a dejte mu název souboru, který je přiřazen Src atributu direktivy Register pro tento uživatelský ovládací prvek, který se nachází v horní části hostitelské webové stránky. Podrobnosti o režimech zobrazení a popis zdrojového kódu v tomto ovládacím prvku naleznete v návodu : Změna režimů zobrazení na stránce webových částí.

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

Druhou částí příkladu kódu je zdrojový kód pro rozhraní a ovládací prvky. Zdrojový soubor obsahuje jednoduché rozhraní s názvem IZipCode. Existuje také WebPart třída, ZipCodeWebPart která implementuje rozhraní a funguje jako zprostředkovatel řízení. Jeho ProvideIZipCode metoda je metoda zpětného volání, která implementuje jediný člen rozhraní. Metoda jednoduše vrátí instanci rozhraní. Všimněte si, že metoda je označena atributem ConnectionProvider v jeho metadatech. Toto je mechanismus pro identifikaci metody jako metody zpětného volání pro spojovací bod poskytovatele. Druhá WebPart třída je pojmenována WeatherWebParta funguje jako příjemce pro připojení. Tato třída má metodu s názvem GetZipCode , která získá instanci IZipCode rozhraní z ovládacího prvku zprostředkovatele. Všimněte si, že tato metoda je označena jako metoda spojovacího bodu příjemce s atributem ConnectionConsumer v jeho metadatech.

Pro spuštění příkladu kódu je nutné zkompilovat tento zdrojový kód. Můžete jej explicitně zkompilovat a výsledné sestavení umístit do složky Bin vašeho webu nebo globální mezipaměti sestavení. Případně můžete zdrojový kód umístit do složky App_Code webu, kde se bude dynamicky kompilovat za běhu. Tento příklad kódu používá dynamickou kompilaci. Návod, který ukazuje, jak se zkompilovat, naleznete v části Návod: Vývoj a použití vlastního ovládacího prvku webového serveru.

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

Třetí částí příkladu kódu je webová stránka. V horní části jsou Register direktivy pro uživatelský ovládací prvek a vlastní WebPart ovládací prvky. Vzhledem k tomu, že příklad předpokládá dynamickou kompilaci ovládacích prvků, zdrojový kód ovládacích prvků by měl být v podsložce App_Code; značka Register na stránce odkazuje pouze na libovolnou předponu značky a obor názvů ovládacích prvků. Vlastní WebPart ovládací prvky (zprostředkovatel a příjemce) jsou deklarovány v elementu webové stránky <asp:webpartzone> uvnitř elementu <zonetemplate> .

Stránka poskytuje tři způsoby, jak vytvořit propojení mezi vlastními ovládacími prvky. První metoda je deklarativní. V kódu stránky je <StaticConnections> prvek deklarován a v tomto <asp:WebPartConnections> prvku, s různými informacemi o spotřebiteli a poskytovateli připojení zadaných jako atributy. Toto je jeden ze způsobů, jak vytvořit připojení tím, že ho deklaruje přímo na webové stránce, konkrétně v rámci elementu <asp:WebPartManager> . Kvůli tomuto statickému připojení se vytvoří připojení mezi těmito dvěma vlastními ovládacími prvky okamžitě při prvním načtení stránky.

Druhá metoda pro vytvoření spojení mezi ovládacími prvky je poskytována prvkem <asp:connectionszone> na stránce. Pokud uživatel přepne stránku do režimu zobrazení za běhu a klikne na příkaz pro připojení na jednom z vlastních ovládacích prvků, <asp:connectionszone> prvek automaticky vykreslí uživatelské rozhraní pro vytvoření připojení.

Stránka také ukazuje třetí způsob vytvoření připojení, což je udělat programově. Button1_Click V metodě kód vytvoří ProviderConnectionPoint objekt pro ovládací prvek zprostředkovatele a načte podrobnosti o spojovacím bodu voláním GetProviderConnectionPoints metody. Provádí podobnou úlohu pro řízení příjemce, která volá metodu GetConsumerConnectionPoints . Nakonec vytvoří nový WebPartConnection objekt voláním ConnectWebParts metody na ovládacím WebPartManager prvku.

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

Po načtení webové stránky v prohlížeči již první připojení existuje, protože je deklarován v rámci elementu <StaticConnections> . Zadejte nějaký text do ovládacího prvku zprostředkovatele PSČ a zobrazí se v ovládacím prvku příjemce. V dalším kroku odpojte oba ovládací prvky. Pomocí ovládacího prvku rozevíracího seznamu Režim zobrazení změňte stránku tak, aby se připojila k režimu zobrazení. U každého z WebPart ovládacích prvků klikněte na nabídku sloves (reprezentovaná šipkou dolů) a všimněte si, že každá z nich má možnost Připojit . Toto je příkaz pro připojení, který se zobrazí v nabídce sloves pouze v případě, že je stránka v režimu připojení. Klikněte na příkaz pro připojení na jednom z ovládacích prvků a zobrazí se uživatelské rozhraní připojení poskytnuté ovládacím ConnectionsZone prvku. Kliknutím na tlačítko Odpojit ukončíte statické připojení mezi ovládacími prvky. Pomocí ovládacího prvku Režim zobrazení se vrátí stránka do režimu procházení. Zkuste znovu zadat nějaký nový text ve zprostředkovateli a všimněte si, že protože ovládací prvky jsou odpojeny, text se v ovládacím prvku příjemce neaktualizuje.

Dále použijte stejnou metodu jako výše a znovu přepněte stránku do režimu připojení zobrazení. Klikněte na příkaz připojit na jednom z ovládacích prvků. Klikněte na odkaz Vytvořit připojení a pomocí uživatelského rozhraní, které ConnectionsZone ovládací prvek poskytuje, vytvořte propojení mezi ovládacími prvky. Toto je druhá metoda pro vytvoření připojení. Všimněte si, že jakmile se vytvoří připojení, poslední řetězec, který jste zadali do ovládacího prvku zprostředkovatele (který se nepodařilo zobrazit, protože ovládací prvky byly odpojeny), se náhle objeví v příjemci, protože připojení bylo znovu vytvořeno. Kliknutím na tlačítko Odpojit ukončíte aktuální připojení, které jste právě vytvořili. Vraťte stránku do režimu procházení. Zadejte do zprostředkovatele nějaký nový text, který předvede, že se text neaktualizuje a že jsou ovládací prvky znovu odpojeny.

Vraťte stránku pro připojení režimu zobrazení. Místo kliknutí na příkaz připojení klikněte na tlačítko Připojit ovládací prvky webové části , které znázorňuje třetí metodu vytvoření připojení. Tento přístup spojuje ovládací prvky programově v jednom jednoduchém kroku, aniž by bylo nutné ovládací prvek používat ConnectionsZone . Všimněte si, že při vytváření připojení se v ovládacím prvku příjemce náhle zobrazí poslední řetězec, který jste zadali v poskytovateli.

Poznámky

V sadě ovládacích částí webových částí je připojení propojením nebo přidružením mezi dvěma WebPart ovládacími prvky (nebo jiným serverem nebo uživatelem), které jim umožňují sdílet data. Tato možnost sdílení dat umožňuje používat propojené ovládací prvky způsoby, které překračují funkce nabízené izolovanými ovládacími prvky. Pokud například jeden ovládací prvek poskytuje data PSČ a jiný ovládací prvek může tato data číst a poskytovat informace o místním počasí na základě PSČ, pak propojená funkce těchto dvou ovládacích prvků poskytuje uživatelům větší hodnotu. Pro rozšíření tohoto příkladu by mohly být vytvořeny další ovládací prvky, které také zobrazují informace založené na PSČ, například ovládací prvek s odkazy na místní zprávy, a všechny tyto ovládací prvky, které můžou pracovat s daty PSČ, mohou sdílet data s jediným ovládacím prvku, který poskytuje PSČ. Koncoví uživatelé aplikací webových částí mohou vytvářet a spravovat připojení mezi všemi těmito kompatibilními ovládacími prvky přímo z webového prohlížeče, pomocí standardního uživatelského rozhraní (UI), které ConnectionsZone ovládací prvek poskytuje, nebo pomocí vlastního uživatelského rozhraní poskytovaného vývojářem.

Tento WebPartConnection přehled třídy je obecné prohlášení o základních podrobnostech pro vytvoření připojení. Další informace o konkrétních součástech a požadavcích souvisejících s vytvářením připojení najdete v tématu Přehled připojení webových částí nebo si prohlédnou referenční třídy a příklady kódu uvedené v následující diskuzi. Připojení webových částí má několik základních aspektů:

  • Dva WebPart ovládací prvky. Každé připojení webových částí se skládá ze dvou ovládacích prvků. Ovládací prvek se může účastnit více než jednoho připojení současně, ale každé připojení se skládá z přesně dvou ovládacích prvků. Ovládací prvky mohou být odvozeny přímo ze WebPart základní třídy nebo mohou být jinými ovládacími prvky serveru, včetně ovládacích prvků ASP.NET, vlastních ovládacích prvků serveru a uživatelských ovládacích prvků. Ovládací prvky, které nejsou odvozeny od WebPart třídy, pokud jsou umístěny v WebPartZoneBase zóně, jsou automaticky zabaleny s objektem GenericWebPart za běhu, což jim umožňuje dědit z WebPart třídy a fungovat jako ovládací prvky za WebPart běhu.

  • Ovládací prvky umístěné v WebPartZoneBase zónách. Ovládací WebPart prvky i jakýkoli jiný typ ovládacího prvku serveru musí být umístěny v WebPartZoneBase zóně, aby se mohly účastnit připojení webových částí (a většina dalších funkcí webových částí).

  • Spotřebitelé a poskytovatelé. V každém připojení webových částí existují dva ovládací prvky: poskytovatel dat a příjemce dat. Zprostředkovatel poskytuje data příjemci prostřednictvím zadané metody zpětného volání, která vrací data ve formě rozhraní. (Příklad vytvoření a určení metody zpětného volání najdete v části Příklad tohoto tématu.) Tato metoda zpětného volání se označuje jako spojovací bod zprostředkovatele. Podrobnosti o tomto spojovacím bodu (jeho popisný název, ID a typ vráceného rozhraní) jsou obsaženy v ProviderConnectionPoint objektu přidruženém k ovládacímu prvku zprostředkovatele. Příjemce obdrží data prostřednictvím zadané metody, která může přijmout instanci rozhraní. Tato metoda se označuje jako spojovací bod příjemce a podrobnosti o spojovacím bodu (název, ID a typ rozhraní) jsou obsaženy v ConsumerConnectionPoint objektu přidruženém k ovládacímu prvku příjemce.

  • Kompatibilní ovládací prvky nebo platný transformátor. Aby připojení fungovalo, musí být příjemce a poskytovatel buď kompatibilní (což znamená, že jejich zadané metody spojovacího bodu můžou pracovat se stejným typem rozhraní), nebo musí být WebPartTransformer objekt schopný přeložit typ nabízený poskytovatelem do typu, kterému příjemce rozumí.

  • Objekt WebPartConnection . Aby připojení existovalo, musí existovat instance WebPartConnection třídy, která obsahuje odkazy na zprostředkovatel a ovládací prvky příjemce spolu s podrobnostmi o jejich spojovacích bodech. Pokud je zprostředkovatel a příjemce nekompatibilní a místo toho použijte WebPartTransformer objekt pro připojení, připojení odkazuje na transformátor.

  • Prostředek navázání připojení. Po správném návrhu kompatibilních ovládacích prvků příjemce a zprostředkovatele pomocí metod spojovacího bodu a umístění do zóny a WebPartConnection je k dispozici objekt, je posledním základním krokem, který je nutný k zahájení připojení. Jedním ze způsobů, jak k tomu může dojít, je vytvoření připojení prostřednictvím uživatelského rozhraní. Pokud umístíte <asp:connectionszone> prvek na stránku a ostatní požadované součásti pro připojení jsou zavedené, může uživatel přepnout stránku do režimu zobrazení připojení, kliknout na příkaz v nabídce příkazů poskytovatele nebo příjemce a zobrazí se uživatelské rozhraní připojení (na základě ovládacího prvku).ConnectionsZone Prostřednictvím tohoto uživatelského rozhraní může uživatel zahájit připojení. Dalším způsobem, jak zahájit připojení, je programově. V obou případech, ať už prostřednictvím uživatelského rozhraní, nebo programově, základní metoda, která inicializuje připojení, je stejná. Aplikace volá metodu ConnectWebParts (nebo metodu ConnectWebParts , pokud používá transformátor) na ovládacím WebPartManager prvku, předá mu zprostředkovatele, příjemce a příslušné objekty spojovacího WebPartConnection bodu a metoda vrátí objekt.

Třída WebPartConnection definuje objekt, který zapouzdřuje základní podrobnosti o spojení mezi dvěma WebPart ovládacími prvky. Třída se skládá téměř zcela z vlastností souvisejících s podrobnostmi konkrétního připojení. Několik vlastností se týká ovládacího prvku příjemce v připojení. Vlastnost Consumer odkazuje na samotný ovládací prvek příjemce a ConsumerID vlastnost odkazuje na ID příjemce. Na ConsumerConnectionPoint objekt, který obsahuje podrobnosti o spojovacím bodu příjemce, odkazuje vlastnost příjemce ConsumerConnectionPoint . Vlastnost ConsumerConnectionPointID odkazuje na ID objektu ConsumerConnectionPoint . Všechny tyto vlastnosti připojení související s uživatelem musí mít přiřazenou hodnotu pro vytvoření připojení.

Třída WebPartConnection má také několik vlastností, které se vztahují k ovládacímu prvku zprostředkovatele v připojení, a tyto vlastnosti odpovídají vlastnostem příjemce. Vlastnost Provider odkazuje na samotný ovládací prvek zprostředkovatele, zatímco ProviderID vlastnost odkazuje na jeho ID. Vlastnost ProviderConnectionPoint odkazuje na ProviderConnectionPoint objekt a ProviderConnectionPointID vlastnost odkazuje na ID spojovacího bodu poskytovatele.

Stav připojení se týká několika vlastností. Tato IsActive vlastnost označuje, jestli je připojení aktivní (aktuálně vyměňuje data) nebo neaktivní (stále připojené, ale aktivně nesdílí data). Vlastnost IsShared označuje, zda je připojení sdílené (dostupné pro všechny uživatele stránky) nebo pro uživatele specifické připojení, a IsStatic vlastnost označuje, zda je ovládací prvek statický (deklarován v kódu stránky a tím trvalý) nebo dynamický (vytvořený programově, což znamená, že lze odstranit).

Konstruktory

Name Description
WebPartConnection()

Inicializuje novou instanci WebPartConnection třídy.

Vlastnosti

Name Description
Consumer

WebPart Získá objekt, který funguje jako ovládací prvek příjemce v připojení.

ConsumerConnectionPoint

Získá objekt, který slouží jako spojovací bod pro ovládací prvek, který funguje jako příjemce v připojení.

ConsumerConnectionPointID

Získá nebo nastaví hodnotu vlastnosti u připojení, které odkazuje na ID objektu sloužícího jako bod připojení příjemce pro toto připojení.

ConsumerID

Získá nebo nastaví hodnotu vlastnosti u připojení, které odkazuje na ID WebPart ovládacího prvku, který funguje jako příjemce pro toto připojení.

ID

Získá nebo nastaví ID objektu WebPartConnection .

IsActive

Získá hodnotu, která určuje, zda WebPartConnection objekt je aktuálně vytvořen a schopen vyměňovat data mezi jeho poskytovatelem a uživatelským ovládacím prvky.

IsShared

Získá hodnotu, která označuje, zda WebPartConnection je objekt viditelný pro všechny uživatele nebo pouze pro aktuálního uživatele.

IsStatic

Získá hodnotu, která označuje, zda WebPartConnection je objekt deklarován v kódu webové stránky nebo vytvořen programově.

Provider

WebPart Získá ovládací prvek, který funguje jako zprostředkovatel v připojení webových částí.

ProviderConnectionPoint

Získá objekt, který slouží jako spojovací bod pro WebPart ovládací prvek, který funguje jako zprostředkovatel pro připojení.

ProviderConnectionPointID

Získá nebo nastaví hodnotu vlastnosti u připojení, které odkazuje na ID objektu sloužícího jako spojovací bod zprostředkovatele pro toto připojení.

ProviderID

Získá nebo nastaví hodnotu vlastnosti připojení, které odkazuje na ID WebPart ovládacího prvku, který funguje jako zprostředkovatel pro toto připojení.

Transformer

WebPartTransformer Získá objekt, který se používá k transformaci dat mezi dvěma jinak nekompatibilními spojovacími body v připojení webových částí.

Transformers

Získá kolekci objektů používaných interně pomocí sady webových WebPartTransformer částí.

Metody

Name Description
Equals(Object)

Určuje, zda je zadaný objekt roven aktuálnímu objektu.

(Zděděno od Object)
GetHashCode()

Slouží jako výchozí funkce hash.

(Zděděno od Object)
GetType()

Získá Type aktuální instance.

(Zděděno od Object)
MemberwiseClone()

Vytvoří mělkou kopii aktuálního Object.

(Zděděno od Object)
ToString()

Přepíše zděděnou ToString() metodu a vrátí krátký název typu objektu připojení.

Platí pro

Viz také