WebPartManager.CanConnectWebParts Yöntem
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.
Bağlantıda WebPart yer alacak denetimleri denetleyecek ve bağlanıp bağlanamayacağını saptar.
Aşırı Yüklemeler
CanConnectWebParts(WebPart, ProviderConnectionPoint, WebPart, ConsumerConnectionPoint) |
WebPart Tüketici ve sağlayıcı denetimleri uyumlu arabirimlere sahip olduğunda ve bir WebPartTransformer nesne gerekli olmadığında bağlanıp bağlanamayacağını belirlemek için bir bağlantıya katılacak denetimleri denetler. |
CanConnectWebParts(WebPart, ProviderConnectionPoint, WebPart, ConsumerConnectionPoint, WebPartTransformer) |
WebPart Bağlanıp bağlanamayacağını belirlemek için bir bağlantıya katılacak denetimleri denetler ve uyumsuz bir tüketici ile sağlayıcı arasında bağlantı oluşturmak için bir WebPartTransformer nesnesi kullanır. |
Açıklamalar
CanConnectWebParts yöntemi, iki WebPart denetimin bağlanıp bağlanamayacağını belirlemek için kullanılır. yöntemi genellikle yöntemini çağırmadan ConnectWebParts önce koşullu denetim olarak kullanılır.
yöntemi, CanConnectWebParts iki denetimin bağlantı oluşturabilmesi için karşılanması gereken bir dizi ölçütü denetler. Aşağıdaki listede bağlantı oluşturmak için birincil ölçütler özetlemektedir. Tüm bu ölçütler (artı bazı ek iç koşullar) karşılanırsa, yöntemi döndürür ve denetimlerin bağlanabileceği anlamına gelir true
:
Sağlayıcı ve tüketici denetimleri olamaz
null
ve özelliği tarafından başvurulan denetimler koleksiyonunda WebParts yer almalıdır.Sağlayıcı ve tüketici aynı denetim olamaz. Başka bir deyişle, denetim WebPart kendisine bağlanamaz.
Hem ConnectionPoint sağlayıcı hem de tüketici için nesneler (bağlantı noktaları) olamaz
null
.Sağlayıcı ve tüketici kapatılamaz (denetimin IsClosed özelliği de olabilir
true
).ControlType Bağlantı noktası denetiminin özelliği, hem tüketici hem de sağlayıcı denetiminin türüyle eşleşmelidir.
Bağlantı noktalarının her ikisi de etkinleştirilmelidir (yöntemlerinin GetEnabled her ikisi de döndürmelidir
true
).Her bağlantı noktası, kendi AllowsMultipleConnections özelliğinde belirtilenden daha fazla bağlantı oluşturmaya çalışmamalıdır.
Uyumsuz denetimleri bağlamak için bir WebPartTransformer nesne (transformatör) gerekiyorsa, bu olamaz
null
. Ancak, kontroller zaten uyumluysa transformatör olmalıdırnull
.Transformatöre (kullanıldıysa) koleksiyonda AvailableTransformers başvurulmalıdır.
Dönüştürücünün (kullanılıyorsa) iki denetim arasında veri dönüştürebilmesi için sağlayıcı ve tüketiciyle uyumlu arabirimlere sahip olması gerekir. Tüketici ve sağlayıcının ikincil arabirimleri de uyumlu olmalıdır.
CanConnectWebParts(WebPart, ProviderConnectionPoint, WebPart, ConsumerConnectionPoint)
WebPart Tüketici ve sağlayıcı denetimleri uyumlu arabirimlere sahip olduğunda ve bir WebPartTransformer nesne gerekli olmadığında bağlanıp bağlanamayacağını belirlemek için bir bağlantıya katılacak denetimleri denetler.
public:
bool CanConnectWebParts(System::Web::UI::WebControls::WebParts::WebPart ^ provider, System::Web::UI::WebControls::WebParts::ProviderConnectionPoint ^ providerConnectionPoint, System::Web::UI::WebControls::WebParts::WebPart ^ consumer, System::Web::UI::WebControls::WebParts::ConsumerConnectionPoint ^ consumerConnectionPoint);
public bool CanConnectWebParts (System.Web.UI.WebControls.WebParts.WebPart provider, System.Web.UI.WebControls.WebParts.ProviderConnectionPoint providerConnectionPoint, System.Web.UI.WebControls.WebParts.WebPart consumer, System.Web.UI.WebControls.WebParts.ConsumerConnectionPoint consumerConnectionPoint);
member this.CanConnectWebParts : System.Web.UI.WebControls.WebParts.WebPart * System.Web.UI.WebControls.WebParts.ProviderConnectionPoint * System.Web.UI.WebControls.WebParts.WebPart * System.Web.UI.WebControls.WebParts.ConsumerConnectionPoint -> bool
Public Function CanConnectWebParts (provider As WebPart, providerConnectionPoint As ProviderConnectionPoint, consumer As WebPart, consumerConnectionPoint As ConsumerConnectionPoint) As Boolean
Parametreler
- provider
- WebPart
Denetimler bağlandığında veri consumer
sağlayan denetim.
- providerConnectionPoint
- ProviderConnectionPoint
Bir ConnectionPoint bağlantıya katılmayı sağlayan provider
.
- consumer
- WebPart
Denetimler bağlandığında veri provider
alan denetim.
- consumerConnectionPoint
- ConsumerConnectionPoint
Bir ConnectionPoint bağlantıya katılabilmesi için consumer
bir geri çağırma yöntemi işlevi gören.
Döndürülenler
bağlanıp provider
bağlanamayacağını gösteren boole consumer
değeri.
Örnekler
Aşağıdaki kod örneğinde bu yöntemin nasıl kullanılacağı gösterilmektedir.
Kod örneğinin dört bölümü vardır:
Web Bölümleri sayfasındaki görüntü modlarını değiştirmenize olanak tanıyan bir kullanıcı denetimi.
Bağlanabilen iki özel WebPart denetim, bir
<asp:webpartmanager>
öğe ve yöntemini kullanarak CanConnectWebParts bağlantı oluşturan olay işleme kodu içeren bir Web sayfası.İki özel denetim ve özel WebPart arabirim içeren bir kaynak kod dosyası.
Örneğin tarayıcıda nasıl çalıştığını gösteren açıklama.
Kod örneğinin ilk bölümü, görüntüleme modlarını değiştirmeye yönelik kullanıcı denetimidir. Kullanıcı denetimi için kaynak kodunu sınıfa genel bakışın Örnek bölümünden WebPartManager alabilirsiniz. Görüntüleme modları ve kullanıcı denetiminin nasıl çalıştığı hakkında daha fazla bilgi için bkz . İzlenecek Yol: Web Bölümleri Sayfasında Görüntü Modlarını Değiştirme.
Web sayfasının bildirim temelli işaretlemesi hem kullanıcı denetimi hem de özel denetimler için yönergeler içerir Register
. Bir <asp:webpartmanager>
öğesi, özel denetimleri içeren bir <asp:webpartzone>
öğesi ve bir <asp:connectionszone>
öğesi vardır. yönteminde Page_Load
kodun bağlantı yapılıp yapılamayacağını denetlediğine ve varsa bir sağlayıcıyı, tüketiciyi ve ilgili bağlantı noktalarını tanımladığına ve ardından özelliği tarafından başvuruda bulunulan statik bağlantı kümesine yeni bir bağlantı eklediğine StaticConnections dikkat edin.
<%@ Page Language="C#" %>
<%@ register TagPrefix="uc1"
TagName="DisplayModeMenuCS"
Src="DisplayModeMenuCS.ascx" %>
<%@ register tagprefix="aspSample"
Namespace="Samples.AspNet.CS.Controls"
Assembly="ConnectionSampleCS"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<script runat="server">
protected void Page_Load(object sender, EventArgs e)
{
// Define provider, consumer, and connection points.
WebPart provider = mgr.WebParts["zip1"];
ProviderConnectionPoint provConnPoint =
mgr.GetProviderConnectionPoints(provider)["ZipCodeProvider"];
WebPart consumer = mgr.WebParts["weather1"];
ConsumerConnectionPoint consConnPoint =
mgr.GetConsumerConnectionPoints(consumer)["ZipCodeConsumer"];
// Check whether the connection already exists.
if (mgr.CanConnectWebParts(provider, provConnPoint,
consumer, consConnPoint))
{
// Create a new static connection.
WebPartConnection conn = new WebPartConnection();
conn.ID = "staticConn1";
conn.ConsumerID = "weather1";
conn.ConsumerConnectionPointID = "ZipCodeConsumer";
conn.ProviderID = "zip1";
conn.ProviderConnectionPointID = "ZipCodeProvider";
mgr.StaticConnections.Add(conn);
}
}
</script>
<html xmlns="http://www.w3.org/1999/xhtml" >
<head id="Head1" runat="server">
<title>ASP.NET Example</title>
</head>
<body>
<form id="form1" runat="server">
<!-- Reference the WebPartManager control. -->
<asp:WebPartManager ID="mgr" runat="server" />
<div>
<uc1:DisplayModeMenuCS ID="displaymode1"
runat="server" />
<!-- Reference consumer and provider controls
in a zone. -->
<asp:WebPartZone ID="WebPartZone1" runat="server">
<ZoneTemplate>
<aspSample:ZipCodeWebPart ID="zip1"
runat="server"
Title="Zip Code Control"/>
<aspSample:WeatherWebPart ID="weather1"
runat="server"
Title="Weather Control" />
</ZoneTemplate>
</asp:WebPartZone>
<hr />
<!-- Add a ConnectionsZone so users can connect
controls. -->
<asp:ConnectionsZone ID="ConnectionsZone1"
runat="server" />
</div>
</form>
</body>
</html>
<%@ Page Language="vb" %>
<%@ register TagPrefix="uc1"
TagName="DisplayModeMenuVB"
Src="DisplayModeMenuVB.ascx" %>
<%@ register tagprefix="aspSample"
Namespace="Samples.AspNet.VB.Controls"
Assembly="ConnectionSampleVB"%>
<!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 Page_Load(ByVal sender As Object, _
ByVal e As System.EventArgs)
' Define provider, consumer, and connection points.
Dim provider As WebPart = mgr.WebParts("zip1")
Dim provConnPoint As ProviderConnectionPoint = _
mgr.GetProviderConnectionPoints(provider)("ZipCodeProvider")
Dim consumer As WebPart = mgr.WebParts("weather1")
Dim consConnPoint As ConsumerConnectionPoint = _
mgr.GetConsumerConnectionPoints(consumer)("ZipCodeConsumer")
' Check whether the connection already exists.
If mgr.CanConnectWebParts(provider, provConnPoint, _
consumer, consConnPoint) Then
' Create a new static connection.
Dim conn As New WebPartConnection()
conn.ID = "staticConn1"
conn.ConsumerID = "weather1"
conn.ConsumerConnectionPointID = "ZipCodeConsumer"
conn.ProviderID = "zip1"
conn.ProviderConnectionPointID = "ZipCodeProvider"
mgr.StaticConnections.Add(conn)
End If
End Sub
</script>
<html xmlns="http://www.w3.org/1999/xhtml" >
<head id="Head1" runat="server">
<title>ASP.NET Example</title>
</head>
<body>
<form id="form1" runat="server">
<!-- Reference the WebPartManager control. -->
<asp:WebPartManager ID="mgr" runat="server" />
<div>
<uc1:DisplayModeMenuVB ID="displaymode1"
runat="server" />
<!-- Reference consumer and provider controls
in a zone. -->
<asp:WebPartZone ID="WebPartZone1" runat="server">
<ZoneTemplate>
<aspSample:ZipCodeWebPart ID="zip1"
runat="server"
Title="Zip Code Control"/>
<aspSample:WeatherWebPart ID="weather1"
runat="server"
Title="Weather Control" />
</ZoneTemplate>
</asp:WebPartZone>
<hr />
<!-- Add a ConnectionsZone so users can connect
controls. -->
<asp:ConnectionsZone ID="ConnectionsZone1"
runat="server" />
</div>
</form>
</body>
</html>
Örneğin üçüncü bölümü, denetimlerin kaynak kodudur. Bir arabirim ve biri sağlayıcı, diğeri de tüketici olarak davranan iki özel WebPart denetim içerir. Uyumlu bağlantı noktaları olduğundan (her ikisi de arabirimi tanır IZipCode
), bağlantıyı yapmak için bir transformatör gerekmez. Kod örneğinin çalışması için bu kaynak kodunu 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 App_Code klasörüne koyabilirsiniz; burada çalışma zamanında dinamik olarak derlenir. Derlemeyi gösteren bir izlenecek yol 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", "ZipCodeProvider")]
public IZipCode ProvideIZipCode()
{
return this;
}
protected override void CreateChildControls()
{
Controls.Clear();
input = new TextBox();
this.Controls.Add(input);
send = new Button();
send.Text = "Enter 5-digit Zip Code";
send.Click += new EventHandler(this.submit_Click);
this.Controls.Add(send);
}
private void submit_Click(object sender, EventArgs e)
{
if (!string.IsNullOrEmpty(input.Text))
{
zipCodeText = Page.Server.HtmlEncode(input.Text);
input.Text = String.Empty;
}
}
}
[AspNetHostingPermission(SecurityAction.Demand,
Level = AspNetHostingPermissionLevel.Minimal)]
[AspNetHostingPermission(SecurityAction.InheritanceDemand,
Level = AspNetHostingPermissionLevel.Minimal)]
public class WeatherWebPart : WebPart
{
private IZipCode _provider;
string _zipSearch;
Label DisplayContent;
// This method is identified by the ConnectionConsumer
// attribute, and is the mechanism for connecting with
// the provider.
[ConnectionConsumer("Zip Code", "ZipCodeConsumer")]
public void GetIZipCode(IZipCode Provider)
{
_provider = Provider;
}
protected override void OnPreRender(EventArgs e)
{
EnsureChildControls();
if (this._provider != null)
{
_zipSearch = _provider.ZipCode.Trim();
DisplayContent.Text = "My Zip Code is: " + _zipSearch;
}
}
protected override void CreateChildControls()
{
Controls.Clear();
DisplayContent = new Label();
this.Controls.Add(DisplayContent);
}
}
}
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", "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", "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
Web sayfasını bir tarayıcıya yükledikten sonra , Görüntü Modu açılan liste denetimine tıklayın ve Bağlan'ı seçerek sayfayı bağlantı moduna geçirin. Bağlantı modu, denetimler arasında bağlantı oluşturmanıza olanak tanımak için öğesini kullanır <asp:connectionszone>
. Bağlantı modunda, fiil menüsünü etkinleştirmek için Posta Kodu denetiminin başlık çubuğundaki aşağı oka tıklayın ve ardından Bağlan'a tıklayın. Bağlantı kullanıcı arabirimi (UI) göründükten sonra, yönteminde yer alan kod tarafından zaten bir bağlantı oluşturulduğuna Page_Load
dikkat edin.
Açıklamalar
Bu yöntem bağlanmak provider
için kullanılır ve consumer
her iki denetim de uyumlu bağlantı noktası türlerine sahip olduğunda, bir WebPartTransformer nesneye ihtiyaç duyulmaz. Programlı bağlantı oluşturmak için çağırmadan ConnectWebParts önce iki denetimin bağlanabildiğini doğrulamak için bu yöntemi kullanmak isteyebilirsiniz.
Bu aşırı yükleme yöntemi aşırı yüklemesiyle CanConnectWebParts(WebPart, ProviderConnectionPoint, WebPart, ConsumerConnectionPoint, WebPartTransformer) aynı uygulamayı kullanır ve tek istisna bu aşırı yüklemenin bir transformatör gerektirmemesidir.
Ayrıca bkz.
Şunlara uygulanır
CanConnectWebParts(WebPart, ProviderConnectionPoint, WebPart, ConsumerConnectionPoint, WebPartTransformer)
WebPart Bağlanıp bağlanamayacağını belirlemek için bir bağlantıya katılacak denetimleri denetler ve uyumsuz bir tüketici ile sağlayıcı arasında bağlantı oluşturmak için bir WebPartTransformer nesnesi kullanır.
public:
virtual bool CanConnectWebParts(System::Web::UI::WebControls::WebParts::WebPart ^ provider, System::Web::UI::WebControls::WebParts::ProviderConnectionPoint ^ providerConnectionPoint, System::Web::UI::WebControls::WebParts::WebPart ^ consumer, System::Web::UI::WebControls::WebParts::ConsumerConnectionPoint ^ consumerConnectionPoint, System::Web::UI::WebControls::WebParts::WebPartTransformer ^ transformer);
public virtual bool CanConnectWebParts (System.Web.UI.WebControls.WebParts.WebPart provider, System.Web.UI.WebControls.WebParts.ProviderConnectionPoint providerConnectionPoint, System.Web.UI.WebControls.WebParts.WebPart consumer, System.Web.UI.WebControls.WebParts.ConsumerConnectionPoint consumerConnectionPoint, System.Web.UI.WebControls.WebParts.WebPartTransformer transformer);
abstract member CanConnectWebParts : System.Web.UI.WebControls.WebParts.WebPart * System.Web.UI.WebControls.WebParts.ProviderConnectionPoint * System.Web.UI.WebControls.WebParts.WebPart * System.Web.UI.WebControls.WebParts.ConsumerConnectionPoint * System.Web.UI.WebControls.WebParts.WebPartTransformer -> bool
override this.CanConnectWebParts : System.Web.UI.WebControls.WebParts.WebPart * System.Web.UI.WebControls.WebParts.ProviderConnectionPoint * System.Web.UI.WebControls.WebParts.WebPart * System.Web.UI.WebControls.WebParts.ConsumerConnectionPoint * System.Web.UI.WebControls.WebParts.WebPartTransformer -> bool
Public Overridable Function CanConnectWebParts (provider As WebPart, providerConnectionPoint As ProviderConnectionPoint, consumer As WebPart, consumerConnectionPoint As ConsumerConnectionPoint, transformer As WebPartTransformer) As Boolean
Parametreler
- provider
- WebPart
Denetimler bağlandığında veri consumer
sağlayan denetim.
- providerConnectionPoint
- ProviderConnectionPoint
Bir ConnectionPoint bağlantıya katılabilmesi için provider
bir geri çağırma yöntemi işlevi gören.
- consumer
- WebPart
Denetimler bağlandığında veri provider
alan denetim.
- consumerConnectionPoint
- ConsumerConnectionPoint
Bir ConnectionPoint bağlantıya katılabilmesi için consumer
bir geri çağırma yöntemi işlevi gören.
- transformer
- WebPartTransformer
WebPartTransformer Uyumsuz provider
bir ve'nin consumer
bağlanmasını sağlayan bir.
Döndürülenler
bağlantı oluşturup provider
oluşturamayacağını ve consumer
oluşturabileceğini gösteren boole değeri.
Açıklamalar
Bu yöntem bağlanmak provider
için ve consumer
her iki denetimin de uyumsuz bağlantı noktası türleri olduğunda kullanılır, böylece bir WebPartTransformer nesne gerekir. Programlı bağlantı oluşturmak için çağırmadan ConnectWebParts önce iki denetimin bağlanabildiğini doğrulamak için bu yöntemi kullanmak isteyebilirsiniz.
Bu aşırı yükleme yöntemi aşırı yüklemesiyle CanConnectWebParts(WebPart, ProviderConnectionPoint, WebPart, ConsumerConnectionPoint) aynı uygulamayı kullanır ve tek istisnası bu aşırı yüklemenin bir transformatör gerektirmesidir.