WebPartManager.CanConnectWebParts Метод
Определение
Важно!
Некоторые сведения относятся к предварительной версии продукта, в которую до выпуска могут быть внесены существенные изменения. Майкрософт не предоставляет никаких гарантий, явных или подразумеваемых, относительно приведенных здесь сведений.
Проверяет элементы управления WebPart, которые будут участвовать в подключении, для определения, способны ли они подключаться друг к другу.
Перегрузки
CanConnectWebParts(WebPart, ProviderConnectionPoint, WebPart, ConsumerConnectionPoint) |
Проверяет элементы управления WebPart, которые будут участвовать в подключении, для определения, способны ли они подключаться друг к другу, если элементы управления поставщика и получателя имеют совместимые интерфейсы, а объект WebPartTransformer не требуется. |
CanConnectWebParts(WebPart, ProviderConnectionPoint, WebPart, ConsumerConnectionPoint, WebPartTransformer) |
Проверяет элементы управления WebPart, которые будут участвовать в подключении, для определения, смогут ли они подключаться, а также использует объект WebPartTransformer для создания подключения между несовместимыми поставщиками и получателями. |
Комментарии
Метод CanConnectWebParts используется для определения возможности соединения двух WebPart элементов управления. Метод обычно используется в качестве условной проверки перед вызовом ConnectWebParts метода .
Метод CanConnectWebParts проверяет ряд критериев, которые должны быть выполнены, прежде чем два элемента управления могут сформировать соединение. В следующем списке перечислены основные критерии для создания соединения. Если выполняются все эти условия (а также некоторые дополнительные внутренние условия), метод возвращает true
, что означает, что элементы управления могут быть подключены:
Элементы управления поставщика и потребителя не могут иметь
null
значение , и они должны содержаться в коллекции элементов управления, на WebParts которые ссылается свойство .Поставщик и потребитель не могут быть одинаковыми. Другими словами, WebPart элемент управления не может подключиться к самому себе.
Объекты ConnectionPoint (точки подключения) для поставщика и потребителя не могут иметь значение
null
.Поставщик и потребитель не могут быть закрыты (ни свойство элемента управления IsClosed не может иметь значение
true
).Свойство ControlType элемента управления точкой подключения должно соответствовать типу элемента управления как потребителя, так и поставщика.
Обе точки подключения должны быть включены (их GetEnabled методы должны возвращать
true
).Каждая точка подключения не должна пытаться сформировать больше соединений, чем указано в собственном AllowsMultipleConnections свойстве.
WebPartTransformer Если для подключения несовместимых элементов управления требуется объект (преобразователь), он не может иметь значение
null
. Однако если элементы управления уже совместимы, преобразователь должен иметь значениеnull
.На преобразователь (если используется) необходимо ссылаться в AvailableTransformers коллекции.
Преобразователь (если используется) должен иметь интерфейсы, совместимые с поставщиком и потребителем, чтобы он смог преобразовывать данные между двумя элементами управления. Вторичные интерфейсы потребителя и поставщика также должны быть совместимыми.
CanConnectWebParts(WebPart, ProviderConnectionPoint, WebPart, ConsumerConnectionPoint)
Проверяет элементы управления WebPart, которые будут участвовать в подключении, для определения, способны ли они подключаться друг к другу, если элементы управления поставщика и получателя имеют совместимые интерфейсы, а объект WebPartTransformer не требуется.
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
Параметры
- provider
- WebPart
Элемент управления, который предоставляет данные для consumer
при подключенных элементах управления.
- providerConnectionPoint
- ProviderConnectionPoint
Точка подключения ConnectionPoint, которая позволяет provider
участвовать в подключении.
- consumer
- WebPart
Элемент управления, который получает данные из provider
при подключенных элементах управления.
- consumerConnectionPoint
- ConsumerConnectionPoint
Точка подключения ConnectionPoint, которая выполняет функцию метода обратного вызова, чтобы consumer
мог участвовать в подключении.
Возвращаемое значение
Логическое значение, указывающее, можно ли подключить друг к другу provider
и consumer
.
Примеры
В следующем примере кода показано, как использовать этот метод.
Пример кода состоит из четырех частей:
Пользовательский элемент управления, позволяющий изменять режимы отображения на странице веб-частей.
Веб-страница, содержащая два настраиваемых WebPart элемента управления, которые можно подключить, элемент
<asp:webpartmanager>
и код обработки событий, создающий соединение с помощью CanConnectWebParts метода .Файл исходного кода, содержащий два пользовательских WebPart элемента управления и пользовательский интерфейс.
Описание работы примера в браузере.
Первая часть примера кода — это пользовательский элемент управления для изменения режимов отображения. Исходный код для пользовательского элемента управления можно получить в разделе Пример в обзоре WebPartManager класса. Дополнительные сведения о режимах отображения и принципе работы пользовательского элемента управления см. в разделе Пошаговое руководство. Изменение режимов отображения на странице веб-частей.
Декларативная разметка для веб-страницы содержит директивы Register
как для пользовательского, так и для пользовательских элементов управления. Существует <asp:webpartmanager>
элемент , элемент , <asp:webpartzone>
содержащий пользовательские элементы управления, и <asp:connectionszone>
элемент . Обратите внимание, что в методе Page_Load
код проверяет, можно ли установить соединение, и, если да, определяет поставщика, потребителя и соответствующие точки подключения, а затем добавляет новое подключение к набору статических подключений, на которые ссылается StaticConnections свойство .
<%@ 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>
Третья часть примера — исходный код для элементов управления. Он содержит интерфейс и два пользовательских WebPart элемента управления, один из них выступает в качестве поставщика, а другой — в качестве потребителя. Так как они имеют совместимые точки подключения (оба распознают IZipCode
интерфейс), преобразователь не требуется для подключения. Для выполнения примера кода необходимо скомпилировать этот исходный код. Ее можно скомпилировать явным образом и поместить полученную сборку в папку Bin веб-сайта или глобальный кэш сборок. Кроме того, исходный код можно поместить в папку App_Code сайта, где он будет динамически компилироваться во время выполнения. Пошаговое руководство, демонстрирующее компиляцию, см. в разделе Пошаговое руководство. Разработка и использование пользовательского серверного веб-элемента управления.
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
Загрузив веб-страницу в браузере, щелкните раскрывающийся список Режим отображения и выберите Подключить , чтобы переключить страницу в режим подключения. В режиме <asp:connectionszone>
подключения элемент используется для создания соединений между элементами управления. В режиме подключения щелкните стрелку вниз в заголовке окна элемента управления Почтовый индекс , чтобы активировать меню команд, а затем выберите подключиться. После появления пользовательского интерфейса подключения обратите внимание, что подключение уже создано кодом, содержащимся в методе Page_Load
.
Комментарии
Этот метод используется для подключения provider
и consumer
, если оба элемента управления имеют совместимые типы точек подключения, поэтому WebPartTransformer объект не требуется. Этот метод может потребоваться для проверки возможности подключения двух элементов управления перед вызовом ConnectWebParts для создания программного подключения.
Эта перегрузка использует ту же реализацию, что и перегрузка CanConnectWebParts(WebPart, ProviderConnectionPoint, WebPart, ConsumerConnectionPoint, WebPartTransformer) метода, за исключением того, что для этой перегрузки не требуется преобразователь.
См. также раздел
Применяется к
CanConnectWebParts(WebPart, ProviderConnectionPoint, WebPart, ConsumerConnectionPoint, WebPartTransformer)
Проверяет элементы управления WebPart, которые будут участвовать в подключении, для определения, смогут ли они подключаться, а также использует объект WebPartTransformer для создания подключения между несовместимыми поставщиками и получателями.
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
Параметры
- provider
- WebPart
Элемент управления, который предоставляет данные для consumer
при подключенных элементах управления.
- providerConnectionPoint
- ProviderConnectionPoint
Точка подключения ConnectionPoint, которая выполняет функцию метода обратного вызова, чтобы provider
мог участвовать в подключении.
- consumer
- WebPart
Элемент управления, который получает данные из provider
при подключенных элементах управления.
- consumerConnectionPoint
- ConsumerConnectionPoint
Точка подключения ConnectionPoint, которая выполняет функцию метода обратного вызова, чтобы consumer
мог участвовать в подключении.
- transformer
- WebPartTransformer
Объект WebPartTransformer, который позволяет подключать несовместимые объекты provider
и consumer
.
Возвращаемое значение
Логическое значение, указывающее, можно ли подключить друг к другу provider
и consumer
.
Комментарии
Этот метод используется для подключения provider
и consumer
, если оба элемента управления имеют несовместимые типы точек соединения, поэтому WebPartTransformer требуется объект . Этот метод может потребоваться для проверки возможности подключения двух элементов управления перед вызовом ConnectWebParts для создания программного подключения.
Эта перегрузка использует ту же реализацию, что и перегрузка CanConnectWebParts(WebPart, ProviderConnectionPoint, WebPart, ConsumerConnectionPoint) метода, за исключением того, что для этой перегрузки требуется преобразователь.