WebPartManager.CanConnectWebParts Metoda
Definice
Důležité
Některé informace platí pro předběžně vydaný produkt, který se může zásadně změnit, než ho výrobce nebo autor vydá. Microsoft neposkytuje žádné záruky, výslovné ani předpokládané, týkající se zde uváděných informací.
Zkontroluje WebPart ovládací prvky, které se budou podílet na připojení, a určí, jestli se dají připojit.
Přetížení
CanConnectWebParts(WebPart, ProviderConnectionPoint, WebPart, ConsumerConnectionPoint) |
Zkontroluje WebPart ovládací prvky, které se budou podílet na připojení, a určí, jestli se dají připojit, když ovládací prvky příjemce a zprostředkovatel mají kompatibilní rozhraní a WebPartTransformer objekt není potřeba. |
CanConnectWebParts(WebPart, ProviderConnectionPoint, WebPart, ConsumerConnectionPoint, WebPartTransformer) |
Zkontroluje WebPart ovládací prvky, které se budou podílet na připojení, a určí, jestli se dají připojit, a použije WebPartTransformer objekt k vytvoření připojení mezi nekompatibilním příjemcem a poskytovatelem. |
Poznámky
Metoda CanConnectWebParts se používá k určení, zda lze připojit dva WebPart ovládací prvky. Metoda se obvykle používá jako podmíněná kontrola před voláním ConnectWebParts metody.
Metoda CanConnectWebParts kontroluje řadu kritérií, která musí být splněna, aby dva ovládací prvky mohly vytvořit připojení. Následující seznam shrnuje primární kritéria pro vytvoření připojení. Pokud jsou splněna všechna tato kritéria (plus některé další interní podmínky), vrátí metoda hodnotu true
, což znamená, že ovládací prvky lze připojit:
Ovládací prvky zprostředkovatele a příjemce nemohou být
null
a musí být obsaženy v kolekci ovládacích prvků, na které WebParts vlastnost odkazuje.Zprostředkovatel a příjemce nemohou být stejné řízení. Jinými slovy, ovládací prvek se WebPart nemůže připojit sám k sobě.
Objekty ConnectionPoint (spojovací body) pro poskytovatele i příjemce nemohou být
null
.Zprostředkovatel a příjemce nelze zavřít (vlastnost ovládacího prvku IsClosed nemůže být
true
).Vlastnost ControlType ovládacího prvku spojovacího bodu musí odpovídat typu ovládacího prvku příjemce i poskytovatele.
Musí být povoleny oba spojovací body (jejich GetEnabled metody musí vracet
true
).Každý spojovací bod se nesmí pokoušet vytvořit více připojení, než je uvedeno v jeho vlastní AllowsMultipleConnections vlastnosti.
Pokud se pro připojení nekompatibilních WebPartTransformer ovládacích prvků vyžaduje objekt (transformátor), nemůže to být
null
. Pokud jsou však ovládací prvky již kompatibilní, musí býtnull
transformátor .Na transformátor (pokud je použit) musí být odkazován v kolekci AvailableTransformers .
Transformátor (pokud je použit) musí mít rozhraní, která jsou kompatibilní s poskytovatelem a příjemcem, aby mohl transformovat data mezi dvěma ovládacími prvky. Musí být kompatibilní také sekundární rozhraní příjemce a poskytovatele.
CanConnectWebParts(WebPart, ProviderConnectionPoint, WebPart, ConsumerConnectionPoint)
Zkontroluje WebPart ovládací prvky, které se budou podílet na připojení, a určí, jestli se dají připojit, když ovládací prvky příjemce a zprostředkovatel mají kompatibilní rozhraní a WebPartTransformer objekt není potřeba.
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
Ovládací prvek, který poskytuje data při consumer
připojení ovládacích prvků.
- providerConnectionPoint
- ProviderConnectionPoint
A ConnectionPoint , která umožňuje provider
účastnit se připojení.
- consumer
- WebPart
Ovládací prvek, který přijímá data z provider
, když jsou ovládací prvky připojeny.
- consumerConnectionPoint
- ConsumerConnectionPoint
A ConnectionPoint , který funguje jako metoda zpětného volání, consumer
aby se mohl účastnit připojení.
Návraty
Logická hodnota, která označuje, zda provider
a consumer
lze připojit.
Příklady
Následující příklad kódu ukazuje, jak použít tuto metodu.
Příklad kódu má čtyři části:
Uživatelský ovládací prvek, který umožňuje měnit režimy zobrazení na stránce webových částí.
Webová stránka, která obsahuje dva vlastní WebPart ovládací prvky, které lze připojit,
<asp:webpartmanager>
prvek a kód zpracování událostí, který vytváří připojení pomocí CanConnectWebParts metody.Soubor zdrojového kódu, který obsahuje dva vlastní WebPart ovládací prvky a vlastní rozhraní.
Vysvětlení fungování příkladu v prohlížeči
První částí příkladu kódu je uživatelský ovládací prvek pro změnu režimů zobrazení. Zdrojový kód pro uživatelský ovládací prvek můžete získat v části Příklad přehledu WebPartManager třídy. Další informace o režimech zobrazení a fungování uživatelského ovládacího prvku najdete v tématu Návod: Změna režimů zobrazení na stránce webových částí.
Deklarativní kód webové stránky obsahuje Register
direktivy pro uživatelský ovládací prvek i vlastní ovládací prvky. Existuje element <asp:webpartmanager>
, element, který <asp:webpartzone>
obsahuje vlastní ovládací prvky, a <asp:connectionszone>
element. Všimněte si, že v Page_Load
metodě kód zkontroluje, jestli je možné vytvořit připojení, a pokud ano, definuje zprostředkovatele, příjemce a příslušné spojovací body a pak přidá nové připojení do sady statických připojení, na která StaticConnections vlastnost odkazuje.
<%@ 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>
Třetí částí příkladu je zdrojový kód ovládacích prvků. Obsahuje rozhraní a dva vlastní WebPart ovládací prvky, jeden funguje jako zprostředkovatel a druhý jako příjemce. Vzhledem k tomu, že mají kompatibilní spojovací body (oba rozpoznávají IZipCode
rozhraní), není k vytvoření připojení potřeba transformátor. Aby se příklad kódu spustil, musíte tento zdrojový kód zkompilovat. Můžete ho explicitně zkompilovat a umístit výsledné sestavení do složky Bin webu nebo globální mezipaměti sestavení . Případně můžete zdrojový kód umístit do složky App_Code webu, kde se bude dynamicky kompilovat za běhu. Návod, který ukazuje, jak kompilovat, najdete v tématu Návod: Vývoj a použití vlastního ovládacího prvku webového serveru.
namespace Samples.AspNet.CS.Controls
{
using System;
using System.Web;
using System.Web.Security;
using System.Security.Permissions;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
[AspNetHostingPermission(SecurityAction.Demand,
Level = AspNetHostingPermissionLevel.Minimal)]
[AspNetHostingPermission(SecurityAction.InheritanceDemand,
Level = AspNetHostingPermissionLevel.Minimal)]
public interface IZipCode
{
string ZipCode { get; set;}
}
[AspNetHostingPermission(SecurityAction.Demand,
Level = AspNetHostingPermissionLevel.Minimal)]
[AspNetHostingPermission(SecurityAction.InheritanceDemand,
Level = AspNetHostingPermissionLevel.Minimal)]
public class ZipCodeWebPart : WebPart, IZipCode
{
string zipCodeText = String.Empty;
TextBox input;
Button send;
public ZipCodeWebPart()
{
}
// Make the implemented property personalizable to save
// the Zip Code between browser sessions.
[Personalizable()]
public virtual string ZipCode
{
get { return zipCodeText; }
set { zipCodeText = value; }
}
// This is the callback method that returns the provider.
[ConnectionProvider("Zip Code", "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 načtení webové stránky v prohlížeči klikněte na ovládací prvek rozevíracího seznamu Režim zobrazení a výběrem možnosti Připojit přepněte stránku do režimu připojení. Režim připojení používá <asp:connectionszone>
element k vytvoření připojení mezi ovládacími prvky. V režimu připojení klikněte na šipku dolů v záhlaví ovládacího prvku PSČ , aby se aktivovala nabídka sloves, a pak klikněte na Připojit. Jakmile se zobrazí uživatelské rozhraní (UI) připojení, všimněte si, že již bylo vytvořeno připojení kódem obsaženým Page_Load
v metodě.
Poznámky
Tato metoda se používá k připojení provider
a consumer
pokud oba ovládací prvky mají kompatibilní typy spojovacích bodů, takže WebPartTransformer objekt není potřeba. Tuto metodu můžete použít k ověření, že se před voláním ConnectWebParts za účelem vytvoření programového připojení dají připojit dva ovládací prvky.
Toto přetížení používá stejnou implementaci jako CanConnectWebParts(WebPart, ProviderConnectionPoint, WebPart, ConsumerConnectionPoint, WebPartTransformer) přetížení metody, s jedinou výjimkou je, že toto přetížení nevyžaduje transformátor.
Viz také
Platí pro
CanConnectWebParts(WebPart, ProviderConnectionPoint, WebPart, ConsumerConnectionPoint, WebPartTransformer)
Zkontroluje WebPart ovládací prvky, které se budou podílet na připojení, a určí, jestli se dají připojit, a použije WebPartTransformer objekt k vytvoření připojení mezi nekompatibilním příjemcem a poskytovatelem.
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
Ovládací prvek, který poskytuje data při consumer
připojení ovládacích prvků.
- providerConnectionPoint
- ProviderConnectionPoint
A ConnectionPoint , který funguje jako metoda zpětného volání, provider
aby se mohl účastnit připojení.
- consumer
- WebPart
Ovládací prvek, který přijímá data z provider
, když jsou ovládací prvky připojeny.
- consumerConnectionPoint
- ConsumerConnectionPoint
A ConnectionPoint , který funguje jako metoda zpětného volání, consumer
aby se mohl účastnit připojení.
- transformer
- WebPartTransformer
A WebPartTransformer , která umožňuje nekompatibilnímu provider
a consumer
připojit se.
Návraty
Logická hodnota, která označuje, jestli provider
a consumer
může vytvořit připojení.
Poznámky
Tato metoda se používá k připojení provider
a consumer
pokud oba ovládací prvky mají nekompatibilní typy spojovacích bodů, takže WebPartTransformer objekt je vyžadován. Tuto metodu můžete použít k ověření, že se před voláním ConnectWebParts za účelem vytvoření programového připojení dají připojit dva ovládací prvky.
Toto přetížení používá stejnou implementaci jako CanConnectWebParts(WebPart, ProviderConnectionPoint, WebPart, ConsumerConnectionPoint) přetížení metody, s jedinou výjimkou je, že toto přetížení vyžaduje transformátor.