WebPartManager.CanConnectWebParts Metoda
Definicja
Ważne
Niektóre informacje odnoszą się do produktu w wersji wstępnej, który może zostać znacząco zmodyfikowany przed wydaniem. Firma Microsoft nie udziela żadnych gwarancji, jawnych lub domniemanych, w odniesieniu do informacji podanych w tym miejscu.
Sprawdza kontrolki WebPart , które będą uczestniczyć w połączeniu, aby określić, czy mogą być połączone.
Przeciążenia
CanConnectWebParts(WebPart, ProviderConnectionPoint, WebPart, ConsumerConnectionPoint) |
Sprawdza kontrolki WebPart , które będą uczestniczyć w połączeniu, aby określić, czy mogą być połączone, gdy kontrolki konsumenta i dostawcy mają zgodne interfejsy, a WebPartTransformer obiekt nie jest wymagany. |
CanConnectWebParts(WebPart, ProviderConnectionPoint, WebPart, ConsumerConnectionPoint, WebPartTransformer) |
Sprawdza kontrolki WebPart , które będą uczestniczyć w połączeniu, aby określić, czy mogą być połączone, i używa WebPartTransformer obiektu do utworzenia połączenia między niezgodnym konsumentem a dostawcą. |
Uwagi
Metoda służy do określania CanConnectWebParts , czy można połączyć dwie WebPart kontrolki. Metoda jest zwykle używana jako kontrola warunkowa przed wywołaniem ConnectWebParts metody .
Metoda CanConnectWebParts sprawdza szereg kryteriów, które muszą zostać spełnione, zanim dwie kontrolki mogą utworzyć połączenie. Poniższa lista zawiera podsumowanie podstawowych kryteriów nawiązywania połączenia. Jeśli zostaną spełnione wszystkie te kryteria (wraz z dodatkowymi warunkami wewnętrznymi), metoda zwróci true
wartość , co oznacza, że kontrolki mogą być połączone:
Kontrolki dostawcy i konsumenta nie mogą być
null
elementami i muszą być zawarte w kolekcji kontrolek, WebParts do których odwołuje się właściwość .Dostawca i odbiorca nie mogą być tą samą kontrolą. Innymi słowy kontrolka WebPart nie może nawiązać połączenia z samym sobą.
Obiekty ConnectionPoint (punkty połączenia) zarówno dla dostawcy, jak i konsumenta nie mogą być
null
.Nie można zamknąć dostawcy i konsumenta (żadna właściwość kontrolki IsClosed nie może być
true
).Właściwość ControlType kontrolki punktu połączenia musi być zgodna z typem kontroli zarówno konsumenta, jak i dostawcy.
Oba punkty połączenia muszą być włączone (obie GetEnabled metody muszą zwracać
true
wartość ).Każdy punkt połączenia nie może próbować tworzyć większej liczby połączeń niż określona we własnej AllowsMultipleConnections właściwości.
WebPartTransformer Jeśli obiekt (transformator) jest wymagany do połączenia niezgodnych kontrolek, nie może to być
null
. Jeśli jednak kontrolki są już zgodne, transformator musi mieć wartośćnull
.Transformator (jeśli jest używany) musi być przywołyny w kolekcji AvailableTransformers .
Transformator (jeśli jest używany) musi mieć interfejsy, które są zgodne z dostawcą i odbiorcą, aby mógł przekształcać dane między dwoma kontrolkami. Interfejsy pomocnicze konsumenta i dostawcy muszą być również zgodne.
CanConnectWebParts(WebPart, ProviderConnectionPoint, WebPart, ConsumerConnectionPoint)
Sprawdza kontrolki WebPart , które będą uczestniczyć w połączeniu, aby określić, czy mogą być połączone, gdy kontrolki konsumenta i dostawcy mają zgodne interfejsy, a WebPartTransformer obiekt nie jest wymagany.
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
Parametry
- provider
- WebPart
Kontrolka, która dostarcza dane, consumer
gdy kontrolki są połączone.
- providerConnectionPoint
- ProviderConnectionPoint
Element ConnectionPoint umożliwiający uczestnictwo provider
w połączeniu.
- consumer
- WebPart
Kontrolka, z której są odbierane dane provider
, gdy kontrolki są połączone.
- consumerConnectionPoint
- ConsumerConnectionPoint
Element ConnectionPoint , który działa jako metoda wywołania zwrotnego, consumer
dzięki czemu może uczestniczyć w połączeniu.
Zwraca
Wartość logiczna wskazująca, czy provider
i consumer
można nawiązać połączenie.
Przykłady
W poniższym przykładzie kodu pokazano, jak używać tej metody.
Przykładowy kod ma cztery części:
Kontrolka użytkownika, która umożliwia zmianę trybów wyświetlania na stronie składniki Web Part.
Strona sieci Web zawierająca dwie kontrolki niestandardowe WebPart , które można połączyć,
<asp:webpartmanager>
element i kod obsługi zdarzeń, który tworzy połączenie przy użyciu CanConnectWebParts metody .Plik kodu źródłowego zawierający dwie kontrolki niestandardowe WebPart i interfejs niestandardowy.
Wyjaśnienie działania przykładu w przeglądarce.
Pierwszą częścią przykładu kodu jest kontrolka użytkownika do zmieniania trybów wyświetlania. Kod źródłowy kontrolki użytkownika można uzyskać w sekcji Przykład w przeglądzie WebPartManager klasy. Aby uzyskać więcej informacji na temat trybów wyświetlania i sposobu działania kontrolki użytkownika, zobacz Przewodnik: zmienianie trybów wyświetlania na stronie składniki Web Part.
Deklaratywne znaczniki dla strony sieci Web zawierają Register
dyrektywy zarówno dla kontrolki użytkownika, jak i kontrolek niestandardowych. <asp:webpartmanager>
Istnieje element, element, który <asp:webpartzone>
zawiera kontrolki niestandardowe i <asp:connectionszone>
element. Zwróć uwagę, że w metodzie Page_Load
kod sprawdza, czy można nawiązać połączenie, a jeśli tak, definiuje dostawcę, konsumenta i odpowiednie punkty połączenia, a następnie dodaje nowe połączenie do zestawu połączeń statycznych przywoływanych przez StaticConnections właściwość.
<%@ 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>
Trzecią częścią przykładu jest kod źródłowy kontrolek. Zawiera interfejs i dwie kontrolki niestandardowe WebPart , jedną działającą jako dostawca, a drugą jako odbiorcę. Ponieważ mają one zgodne punkty połączenia (oba z nich rozpoznają IZipCode
interfejs), funkcja przekształcania nie jest wymagana do nawiązania połączenia. Aby można było uruchomić przykładowy kod, należy skompilować ten kod źródłowy. Można je skompilować jawnie i umieścić wynikowy zestaw w folderze Bin witryny sieci Web lub globalnej pamięci podręcznej zestawów. Alternatywnie można umieścić kod źródłowy w folderze App_Code witryny, w którym będzie dynamicznie kompilowany w czasie wykonywania. Aby zapoznać się z przewodnikiem, który pokazuje sposób kompilowania, zobacz Przewodnik: tworzenie i używanie niestandardowej kontrolki serwera sieci Web.
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
Po załadowaniu strony sieci Web w przeglądarce kliknij kontrolkę listy rozwijanej Tryb wyświetlania i wybierz Połączenie, aby przełączyć stronę w tryb łączenia. Połączenie tryb używa <asp:connectionszone>
elementu , aby umożliwić tworzenie połączeń między kontrolkami. W trybie łączenia kliknij strzałkę w dół na pasku tytułu kontrolki Kod pocztowy, aby aktywować menu czasowników, a następnie kliknij przycisk Połączenie. Po pojawieniu się interfejsu użytkownika połączenia zwróć uwagę, że połączenie zostało już utworzone przez kod zawarty w metodzie Page_Load
.
Uwagi
Ta metoda służy do nawiązywania połączenia provider
i consumer
gdy obie kontrolki mają zgodne typy punktów połączenia, dzięki czemu WebPartTransformer obiekt nie jest wymagany. Możesz użyć tej metody, aby sprawdzić, czy można połączyć dwie kontrolki przed wywołaniem ConnectWebParts w celu utworzenia połączenia programowego.
To przeciążenie używa tej samej implementacji co CanConnectWebParts(WebPart, ProviderConnectionPoint, WebPart, ConsumerConnectionPoint, WebPartTransformer) przeciążenie metody, z jedynym wyjątkiem jest to, że to przeciążenie nie wymaga transformatora.
Zobacz też
Dotyczy
CanConnectWebParts(WebPart, ProviderConnectionPoint, WebPart, ConsumerConnectionPoint, WebPartTransformer)
Sprawdza kontrolki WebPart , które będą uczestniczyć w połączeniu, aby określić, czy mogą być połączone, i używa WebPartTransformer obiektu do utworzenia połączenia między niezgodnym konsumentem a dostawcą.
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
Parametry
- provider
- WebPart
Kontrolka, która dostarcza dane, consumer
gdy kontrolki są połączone.
- providerConnectionPoint
- ProviderConnectionPoint
Element ConnectionPoint , który działa jako metoda wywołania zwrotnego, provider
dzięki czemu może uczestniczyć w połączeniu.
- consumer
- WebPart
Kontrolka, z której są odbierane dane provider
, gdy kontrolki są połączone.
- consumerConnectionPoint
- ConsumerConnectionPoint
Element ConnectionPoint , który działa jako metoda wywołania zwrotnego, consumer
dzięki czemu może uczestniczyć w połączeniu.
- transformer
- WebPartTransformer
Element WebPartTransformer , który umożliwia niezgodność provider
i consumer
nawiązywanie połączenia.
Zwraca
Wartość logiczna wskazująca, czy provider
i consumer
może utworzyć połączenie.
Uwagi
Ta metoda służy do nawiązywania połączenia provider
i consumer
gdy oba kontrolki mają niezgodne typy punktów połączenia, aby WebPartTransformer obiekt był wymagany. Możesz użyć tej metody, aby sprawdzić, czy można połączyć dwie kontrolki przed wywołaniem ConnectWebParts w celu utworzenia połączenia programowego.
To przeciążenie używa tej samej implementacji co CanConnectWebParts(WebPart, ProviderConnectionPoint, WebPart, ConsumerConnectionPoint) przeciążenie metody, a jedynym wyjątkiem jest to, że to przeciążenie wymaga transformatora.