WebPartConnection Sınıf
Tanım
Önemli
Bazı bilgiler ürünün ön sürümüyle ilgilidir ve sürüm öncesinde önemli değişiklikler yapılmış olabilir. Burada verilen bilgilerle ilgili olarak Microsoft açık veya zımni hiçbir garanti vermez.
İ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:
Sayfada 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ı IZipCode
basit 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 WeatherWebPart
ve 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çirirse 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 WebPartBir Bağlan 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 geçmek 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 denetim tarafından sağlanan kullanıcı arabirimini ConnectionsZone kullanarak denetimler arasında bir bağlantı oluşturun. Bu, bağlantı oluşturmak için ikinci yöntemdir. Bağlantı oluşturulduğunda, sağlayıcı denetimine girdiğiniz son dizenin (denetimlerin bağlantısı kesildiği için görüntülenemedi) tüketicide aniden göründüğünü, çü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. Metnin güncelleştirilmediğini ve denetimlerin yeniden bağlantısının kesildiğini göstermek için sağlayıcıya yeni bir metin girin.
Görüntü moduna bağlanmak için sayfayı döndür. Bağlantı fiiline tıklamak yerine, üçüncü bağlantı oluşturma yöntemini gösteren Web Bölümü Denetimlerini Bağla 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ında WebPart veri paylaşmalarına olanak tanıyan bir bağlantı veya ilişkidir. 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ılarına 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ümü 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ılarına (ve diğer Web Bölümleri özelliklerinin ç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ümü bağlantısında 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ılabildikten 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 ConnectWebPartsWebPartManager yöntemini (veya ConnectWebParts transformatör kullanıyorsanız yöntemi) çağırarak sağlayıcıya, tüketiciye ve ilgili bağlantı noktası nesnelerine 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 |
WebPart Bir 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 Web Bölümleri bağlantısında sağlayıcı işlevi gören bir denetimi alır. |
ProviderConnectionPoint |
Bir bağlantı için sağlayıcı olarak davranan bir WebPart denetim için bağlantı noktası olarak hizmet veren nesneyi 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 Web Bölümleri bağlantısındaki iki uyumsuz bağlantı noktası arasında verileri 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 bir 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. |