WebPartConnection Sınıf

Tanım

İki WebPart denetimin bağlantı oluşturmasını sağlayan bir nesne sağlar. Bu sınıf devralınamaz.

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
Devralma
WebPartConnection
Öznitelikler

Örnekler

Aşağıdaki kod örneği, iki WebPart denetim arasında basit bir bağlantı oluşturmayı gösterir. Örnekte bağlantı oluşturmanın üç yolu gösterilmektedir: Bağlantının etiketlerini Web sayfasının işaretlemesine yerleştirerek bildirimli olarak; program aracılığıyla, kodda bağlantı oluşturarak; ve kullanıcı arabirimi aracılığıyla, sayfaya kullanıcıların bağlantı kurmasını sağlayan bir ConnectionsZone denetim yerleştirerek.

Kod örneğinin dört bölümü vardır:

  • Sayfadaki Web Bölümleri görüntüleme modunu değiştirmenize olanak tanıyan bir kullanıcı denetimi.

  • Bir arabirim için kaynak kodu ve bir bağlantı için sağlayıcı ve tüketici olarak davranan iki WebPart denetim.

  • Tüm denetimleri barındırmak ve kod örneğini çalıştırmak için bir Web sayfası.

  • Örnek sayfayı çalıştırmanın açıklaması.

Bu kod örneğinin ilk bölümü, kullanıcıların Web sayfasındaki görüntü modlarını değiştirmesine olanak tanıyan kullanıcı denetimidir. Aşağıdaki kaynak kodu bir .ascx dosyasına kaydederek, barındırma Web sayfasının en üstüne yakın olan bu kullanıcı denetimi yönergesinin Register özniteliğine Src atanan dosya adını verin. Bu denetimdeki görüntü modları ve kaynak kodun açıklaması hakkında ayrıntılı bilgi için bkz. İzlenecek Yol: Web Bölümleri Sayfasında Görüntüleme Modlarını Değiştirme.

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

Kod örneğinin ikinci bölümü, arabirimin ve denetimlerin kaynak kodudur. Kaynak dosya adlı IZipCodebasit bir arabirim içerir. Arabirimi uygulayan ve sağlayıcı denetimi olarak davranan adlı ZipCodeWebPart bir WebPart sınıf da vardır. Yöntemi ProvideIZipCode , arabirimin tek üyesini uygulayan geri çağırma yöntemidir. yöntemi yalnızca arabiriminin bir örneğini döndürür. yönteminin meta verilerinde bir ConnectionProvider öznitelikle işaretlendiğini unutmayın. Bu, sağlayıcının bağlantı noktası için geri çağırma yöntemi olarak yöntemini tanımlama mekanizmasıdır. Diğer WebPart sınıf olarak adlandırılır WeatherWebPartve bağlantı için tüketici işlevi görür. Bu sınıf, sağlayıcı denetiminden arabirimin bir örneğini IZipCode alan adlı GetZipCode bir yönteme sahiptir. Bu yöntemin, meta verilerinde bir ConnectionConsumer özniteliği olan tüketicinin bağlantı noktası yöntemi olarak işaretlendiğini unutmayın.

Kod örneğinin çalışması için bu kaynak kodu derlemeniz gerekir. Bunu açıkça derleyebilir ve sonuçta elde edilen derlemeyi Web sitenizin Bin klasörüne veya genel derleme önbelleğine yerleştirebilirsiniz. Alternatif olarak, kaynak kodu sitenizin çalışma zamanında dinamik olarak derlenecek App_Code klasörüne yerleştirebilirsiniz. Bu kod örneği dinamik derleme kullanır. Derlemeyi gösteren bir kılavuz için bkz. İzlenecek yol: Özel Web Sunucusu Denetimi Geliştirme ve Kullanma.

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

Kod örneğinin üçüncü bölümü Web sayfasıdır. Üst kısımda Register kullanıcı denetimi ve özel WebPart denetimler için yönergeler bulunur. Örnekte denetimlerin dinamik derlemesi varsaydığından, denetimlerin kaynak kodu bir App_Code alt klasöründe olmalıdır; Register sayfadaki etiket yalnızca rastgele bir etiket ön ekini ve denetimlerin ad alanına başvurur. Özel WebPart denetimler (sağlayıcı ve tüketici) web sayfasının <asp:webpartzone> öğesi içinde, bir <zonetemplate> öğenin içinde bildirilir.

Sayfa, özel denetimler arasında bağlantı oluşturmak için üç yol sağlar. İlk yöntem bildirim temellidir. Sayfanın işaretlemesinde, bir <StaticConnections> öğe bildirilir ve bu <asp:WebPartConnections> öğenin içinde, bağlantının çeşitli tüketici ve sağlayıcı ayrıntıları öznitelik olarak belirtilir. Bu, bağlantıyı doğrudan Web sayfasında, özellikle öğesi içinde bildirerek bağlantı oluşturmanın <asp:WebPartManager> bir yoludur. Bu statik bağlantı nedeniyle, sayfa ilk kez yüklendiğinde iki özel denetim arasında hemen bir bağlantı oluşturulur.

Denetimler arasında bağlantı oluşturmak için ikinci bir yöntem sayfadaki öğesi tarafından <asp:connectionszone> sağlanır. Kullanıcı çalışma zamanında bir sayfayı bağlantı görüntüleme moduna geçirir ve özel denetimlerden birinde bir bağlantı fiiline tıklarsa, <asp:connectionszone> öğe bağlantı oluşturmak için kullanıcı arabirimini otomatik olarak işler.

Sayfada ayrıca bağlantı oluşturmanın program aracılığıyla gerçekleştirilen üçüncü bir yolu da gösterilmektedir. yönteminde Button1_Click kod, sağlayıcı denetimi için bir ProviderConnectionPoint nesne oluşturur ve yöntemini çağırarak GetProviderConnectionPoints bağlantı noktası ayrıntılarını alır. Tüketici denetimi için yöntemini çağırarak benzer bir görev yürütür GetConsumerConnectionPoints . Son olarak, denetimde yöntemini WebPartManager çağırarak ConnectWebParts yeni WebPartConnection nesneyi oluşturur.

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

Web sayfasını bir tarayıcıya yükledikten sonra, öğe içinde <StaticConnections> bildirildiğinden ilk bağlantı zaten var olur. Posta Kodu Sağlayıcısı denetimine metin girdiğinizde, bu metin tüketici denetiminde görüntülenir. Ardından, iki denetimin bağlantısını kesin. Görüntü Modu açılan liste denetimini kullanarak sayfayı görüntü moduna bağlanacak şekilde değiştirin. Denetimlerin her biri için fiiller menüsüne (başlık çubuğunda aşağı okla gösterilir) tıklayın ve her birinin WebPart Bağlan bir seçeneği olduğuna dikkat edin. Bu, fiiller menüsünde yalnızca sayfa bağlantı modundayken görünen bir bağlantı fiilidir. Denetimlerden birinde bağlantı fiiline tıkladığınızda denetim tarafından ConnectionsZone sağlanan bağlantı kullanıcı arabirimi görüntülenir. Denetimler arasındaki statik bağlantıyı sonlandırmak için Bağlantıyı Kes düğmesine tıklayın. Sayfayı göz atma moduna döndürmek için Görüntü Modu denetimini kullanın. Sağlayıcıya yeni bir metin girmeyi yeniden deneyin ve denetimlerin bağlantısı kesildiğinden, tüketici denetiminde metnin güncelleştirilemediğine dikkat edin.

Ardından, sayfayı yeniden bağlantı görüntüleme moduna almak için yukarıdakiyle aynı yöntemi kullanın. Denetimlerden birinde bir bağlantı fiiline tıklayın. Bağlantı Oluştur bağlantısına tıklayın ve denetimler arasında bağlantı oluşturmak için denetim tarafından ConnectionsZone sağlanan kullanıcı arabirimini kullanın. Bu, bağlantı oluşturmak için ikinci yöntemdir. Bağlantı oluşturulduğunda, sağlayıcı denetimine girdiğiniz son dizenin (denetimler bağlantısı kesildiği için görünemeyen) aniden tüketicide gösterildiğini, çünkü bağlantının yeniden oluşturulduğunu unutmayın. Yeni oluşturduğunuz geçerli bağlantıyı sonlandırmak için Bağlantıyı Kes düğmesine tıklayın. Sayfayı göz atma moduna döndür. Sağlayıcıya, metnin güncelleştirilmediğini ve denetimlerin yeniden bağlantısının kesildiğini göstermek için yeni bir metin girin.

Görüntü moduna bağlanmak için sayfayı döndür. Bir bağlantı fiiline tıklamak yerine, üçüncü bağlantı oluşturma yöntemini gösteren Web Bölümü Denetimleri Bağlan düğmesine tıklayın. Bu yaklaşım, denetimi kullanmak ConnectionsZone zorunda kalmadan denetimleri tek bir basit adımda program aracılığıyla bağlar. Bağlantı oluşturulduktan sonra sağlayıcıya girdiğiniz son dizenin aniden tüketici denetiminde göründüğünü unutmayın.

Açıklamalar

Web Bölümleri denetim kümesinde bağlantı, iki (veya başka bir sunucu veya kullanıcı) denetimi arasındaki WebPart bağlantı veya ilişkidir ve bu denetimler veri paylaşmalarına olanak tanır. Bu veri paylaşma özelliği, bağlı denetimlerin yalıtılmış denetimler tarafından sunulan işlevselliği aşan şekillerde kullanılmasını sağlar. Örneğin, bir denetim posta kodu verileri sağlıyorsa ve başka bir denetim bu verileri okuyabiliyorsa ve posta koduna göre yerel hava durumu bilgileri sağlıyorsa, iki denetimin bağlı özelliği kullanıcılara daha fazla değer sağlar. Bu örneği genişletmek için, yerel haberlere bağlantılar içeren bir denetim gibi posta koduna dayalı bilgiler de görüntüleyen başka denetimler oluşturulabilir ve posta kodu verileriyle çalışabilen tüm bu denetimler, posta kodu sağlayan tek denetimle veri paylaşabilir. Web Bölümleri uygulamalarının son kullanıcıları, denetim tarafından sağlanan standart bağlantılar kullanıcı arabirimini (UI) veya geliştirici tarafından ConnectionsZone sağlanan özel bir kullanıcı arabirimini kullanarak bu tür tüm uyumlu denetimler arasında doğrudan bir Web tarayıcısından bağlantı oluşturabilir ve yönetebilir.

Bu WebPartConnection sınıfa genel bakış, bağlantı oluşturmaya yönelik temel ayrıntıların genel bir bildirimidir. Bağlantı oluşturmayla ilgili belirli bileşenler ve gereksinimler hakkında daha fazla bilgi için Bkz. Web Bölümleri Bağlantılara Genel Bakış veya aşağıdaki tartışmada bahsedilen başvuru sınıfları ve kod örnekleri. Web Bölümleri bağlantısının birkaç temel yönü vardır:

  • İki WebPart denetim. Her Web Bölümleri bağlantısı iki denetimden oluşur. Bir denetimin aynı anda birden fazla bağlantıya katılması mümkündür, ancak her bağlantı tam olarak iki denetimden oluşur. Denetimler doğrudan temel sınıftan WebPart türetilebilir veya ASP.NET denetimleri, özel sunucu denetimleri ve kullanıcı denetimleri gibi diğer sunucu denetimleri olabilir. Bir bölgeye yerleştirilirse WebPartZoneBase sınıfından WebPart türetilmeyen denetimler, çalışma zamanında bir GenericWebPart nesneyle otomatik olarak sarmalandığından, sınıftan WebPart devralmalarına ve çalışma zamanı WebPart denetimleri olarak işlev vermelerine olanak tanır.

  • Bölgelerde bulunan WebPartZoneBase denetimler. Web Bölümleri bağlantılara (ve diğer Web Bölümleri özelliklerin çoğuna) katılabilmek için hem denetimlerin hem de WebPart diğer sunucu denetim türlerinin bir WebPartZoneBase bölgede bulunması gerekir.

  • Tüketiciler ve sağlayıcılar. Her Web Bölümleri bağlantıda iki denetim vardır: veri sağlayıcısı ve veri tüketicisi. Sağlayıcı, verileri arabirim biçiminde döndüren belirli bir geri çağırma yöntemi aracılığıyla tüketiciye sağlar. (Geri çağırma yöntemini oluşturma ve belirtme örneği için bu konunun Örnek bölümüne bakın.) Bu geri çağırma yöntemi, sağlayıcı bağlantı noktası olarak bilinir. Bu bağlantı noktasının ayrıntıları (bu bağlantı noktasının "kolay" adı, kimliği ve döndürülen arabirimin türü) sağlayıcı denetimiyle ilişkili bir ProviderConnectionPoint nesnede yer alır. Tüketici, verileri arabirimin bir örneğini kabul edebilen belirli bir yöntem aracılığıyla alır. Bu yöntem tüketici bağlantı noktası olarak bilinir ve bağlantı noktasının ayrıntıları (ad, kimlik ve arabirim türü) tüketici denetimiyle ilişkili bir ConsumerConnectionPoint nesnede yer alır.

  • Uyumlu kontroller veya geçerli bir transformatör. Bir bağlantının çalışması için tüketici ve sağlayıcının uyumlu olması (belirtilen bağlantı noktası yöntemlerinin aynı arabirim türüyle çalışabileceği anlamına gelir) veya sağlayıcı tarafından sunulan türü tüketici tarafından anlaşılan bir türe çevirebilen bir nesne olması WebPartTransformer gerekir.

  • Bir WebPartConnection nesnesi. Bir bağlantının WebPartConnection var olması için, sağlayıcı ve tüketici denetimlerine başvurular ve bağlantı noktalarının ayrıntılarını içeren bir sınıf örneği olmalıdır. Sağlayıcı ve tüketici uyumsuzsa ve bunun yerine bağlanmak için bir WebPartTransformer nesne kullanıyorsa, bağlantı transformatöre başvurur.

  • Bağlantıyı kurmanın bir aracı. Uyumlu tüketici ve sağlayıcı denetimleri bağlantı noktası yöntemleriyle düzgün bir şekilde tasarlandıktan ve bir bölgeye yerleştirildikten ve bir WebPartConnection nesne kullanıma sunulduktan sonra, gerekli son temel adım bağlantıyı başlatmaktır. Bunun gerçekleşmesinin bir yolu, kullanıcıların kullanıcı arabirimi aracılığıyla bağlantı oluşturmasıdır. Sayfaya bir <asp:connectionszone> öğe yerleştirirseniz ve bağlantı için gerekli diğer bileşenler yerindeyse, çalışma zamanında kullanıcı sayfayı bağlantı görüntüleme moduna geçebilir, sağlayıcının veya tüketicinin fiiller menüsünde bir bağlantı fiiline tıklayabilir ve bir bağlantı kullanıcı arabirimi (denetime ConnectionsZone göre) görüntülenir. Kullanıcı bu kullanıcı arabirimi aracılığıyla bağlantıyı başlatabilir. Bağlantıyı başlatmanın bir diğer yolu da bunu program aracılığıyla yapmaktır. Her iki durumda da, kullanıcı arabirimi aracılığıyla veya program aracılığıyla, bağlantıyı başlatan temel yöntem aynıdır. Uygulama denetimde ConnectWebParts WebPartManager yöntemini (veya ConnectWebParts transformatör kullanıyorsanız yöntemi) çağırır ve buna sağlayıcıyı, tüketiciyi ve ilgili bağlantı noktası nesnelerini geçirir ve yöntem bir WebPartConnection nesnesi döndürür.

sınıfı, WebPartConnection iki WebPart denetim arasındaki bir bağlantının temel ayrıntılarını kapsülleyen bir nesne tanımlar. sınıfı, belirli bir bağlantının ayrıntılarıyla ilgili neredeyse tamamen özelliklerden oluşur. Çeşitli özellikler bir bağlantıdaki tüketici denetimiyle ilgilidir. Consumer özelliği tüketici denetiminin kendisine, ConsumerID özelliği ise tüketicinin kimliğine başvurur. Tüketicinin ConsumerConnectionPoint bağlantı noktasının ayrıntılarını içeren nesnesine, tüketicinin ConsumerConnectionPoint özelliği tarafından başvurulur. ConsumerConnectionPointID özelliği nesnenin kimliğine başvururConsumerConnectionPoint. Bu tüketiciyle ilgili tüm bağlantı özelliklerine bağlantı oluşturmak için atanmış bir değer olmalıdır.

sınıfı WebPartConnection ayrıca bir bağlantıdaki sağlayıcı denetimiyle ilgili çeşitli özelliklere sahiptir ve bunlar bir tüketicinin özelliklerine karşılık gelir. Provider özelliği sağlayıcı denetiminin kendisine, özelliği ise kimliğine ProviderID başvurur. ProviderConnectionPoint özelliği nesnesineProviderConnectionPoint, ProviderConnectionPointID özelliği ise sağlayıcının bağlantı noktasının kimliğine başvurur.

Birkaç özellik, bağlantının durumuyla ilgilidir. özelliği, IsActive bağlantının etkin (şu anda veri alışverişi) veya etkin değil (hala bağlı ancak etkin olarak veri paylaşmıyor) olduğunu gösterir. IsShared özelliği, bağlantının paylaşılan (sayfanın tüm kullanıcıları tarafından kullanılabilir) veya kullanıcıya özgü bir bağlantı olup olmadığını belirtir ve IsStatic özelliği denetimin statik (sayfa işaretlemesinde bildirilir ve dolayısıyla kalıcı) veya dinamik (program aracılığıyla oluşturulur, yani silinebilir) olduğunu gösterir.

Oluşturucular

WebPartConnection()

WebPartConnection sınıfının yeni bir örneğini başlatır.

Özellikler

Consumer

Bir WebPart bağlantıda tüketici denetimi olarak davranan bir nesneyi alır.

ConsumerConnectionPoint

Bir bağlantıda tüketici olarak davranan bir denetim için bağlantı noktası olarak hizmet veren nesneyi alır.

ConsumerConnectionPointID

Bu bağlantı için tüketici bağlantı noktası olarak hizmet veren nesnenin kimliğine başvuran bir bağlantıda özellik değerini alır veya ayarlar.

ConsumerID

Bu bağlantı için tüketici olarak davranan denetimin kimliğine başvuran bir bağlantıda WebPart özellik değerini alır veya ayarlar.

ID

Bir WebPartConnection nesnenin kimliğini alır veya ayarlar.

IsActive

Bir nesnenin şu anda kurulup kurulmadığını ve sağlayıcı ile tüketici denetimleri arasında veri alışverişi yapıp yapamadığını gösteren bir WebPartConnection değer alır.

IsShared

Bir nesnenin tüm kullanıcılara mı yoksa yalnızca geçerli kullanıcıya mı görünür olduğunu gösteren bir WebPartConnection değer alır.

IsStatic

Bir nesnenin Bir Web sayfasının işaretlemesinde bildirildiğini veya program aracılığıyla oluşturulup oluşturulmadığını WebPartConnection belirten bir değer alır.

Provider

WebPart bir Web Bölümleri bağlantısında sağlayıcı olarak davranan bir denetimi alır.

ProviderConnectionPoint

Bağlantı için sağlayıcı olarak davranan bir WebPart denetimin bağlantı noktası olarak hizmet veren nesnesini alır.

ProviderConnectionPointID

Bu bağlantı için sağlayıcı bağlantı noktası olarak hizmet veren nesnenin kimliğine başvuran bir bağlantıda özellik değerini alır veya ayarlar.

ProviderID

Bu bağlantı için sağlayıcı olarak davranan denetimin kimliğine başvuran bir bağlantıda WebPart özellik değerini alır veya ayarlar.

Transformer

WebPartTransformer bir Web Bölümleri bağlantısındaki iki uyumsuz bağlantı noktası arasında veri dönüştürmek için kullanılan bir nesneyi alır.

Transformers

Web Bölümleri denetim kümesi tarafından dahili olarak kullanılan nesne koleksiyonunu WebPartTransformer alır.

Yöntemler

Equals(Object)

Belirtilen nesnenin geçerli nesneye eşit olup olmadığını belirler.

(Devralındığı yer: Object)
GetHashCode()

Varsayılan karma işlevi işlevi görür.

(Devralındığı yer: Object)
GetType()

Type Geçerli örneğini alır.

(Devralındığı yer: Object)
MemberwiseClone()

Geçerli Objectöğesinin sığ bir kopyasını oluşturur.

(Devralındığı yer: Object)
ToString()

Devralınan yöntemi geçersiz kılar ToString() ve bağlantı nesnesi için kısa bir tür adı döndürür.

Şunlara uygulanır

Ayrıca bkz.