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> подключения элемент используется для создания соединений между элементами управления. В режиме подключения щелкните стрелку вниз в строке заголовка элемента управления ZIP Code, чтобы активировать его меню команд, а затем нажмите кнопку "Подключить". После появления пользовательского интерфейса подключения обратите внимание, что подключение уже создано кодом, содержащимся в методе 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) метода, при этом единственным исключением является то, что для этой перегрузки требуется преобразователь.