WebPartConnection Klas
Definitie
Belangrijk
Bepaalde informatie heeft betrekking op een voorlopige productversie die aanzienlijk kan worden gewijzigd voordat deze wordt uitgebracht. Microsoft biedt geen enkele expliciete of impliciete garanties met betrekking tot de informatie die hier wordt verstrekt.
Biedt een object waarmee twee WebPart besturingselementen een verbinding kunnen vormen. Deze klasse kan niet worden overgenomen.
public ref class WebPartConnection sealed
[System.ComponentModel.TypeConverter(typeof(System.ComponentModel.ExpandableObjectConverter))]
public sealed class WebPartConnection
[<System.ComponentModel.TypeConverter(typeof(System.ComponentModel.ExpandableObjectConverter))>]
type WebPartConnection = class
Public NotInheritable Class WebPartConnection
- Overname
-
WebPartConnection
- Kenmerken
Voorbeelden
In het volgende codevoorbeeld ziet u hoe u een eenvoudige verbinding tussen twee WebPart besturingselementen maakt. In het voorbeeld ziet u drie manieren om een verbinding te vormen: declaratief, door tags voor de verbinding in de opmaak van de webpagina te plaatsen; programmatisch door de verbinding in code te maken; en via de gebruikersinterface door een ConnectionsZone besturingselement op de pagina te plaatsen, zodat gebruikers verbinding kunnen maken.
Het codevoorbeeld heeft vier delen:
Een gebruikersbeheer waarmee u de weergavemodus voor webonderdelen op een pagina kunt wijzigen.
Broncode voor een interface en twee WebPart besturingselementen die fungeren als de provider en de consument voor een verbinding.
Een webpagina om alle besturingselementen te hosten en het codevoorbeeld uit te voeren.
Een uitleg over het uitvoeren van de voorbeeldpagina.
Het eerste deel van dit codevoorbeeld is het gebruikersbeheer waarmee gebruikers weergavemodi op een webpagina kunnen wijzigen. Sla de volgende broncode op in een .ascx-bestand, waardoor het de bestandsnaam krijgt die is toegewezen aan het Src kenmerk van de Register instructie voor dit gebruikersbeheer, dat zich boven aan de hostingwebpagina bevindt. Zie Overzicht: Weergavemodi wijzigen op een pagina met webonderdelen voor meer informatie over weergavemodi en een beschrijving van de broncode in dit besturingselement.
<%@ control language="C#" classname="DisplayModeMenuCS"%>
<script runat="server">
// Use a field to reference the current WebPartManager.
WebPartManager _manager;
void Page_Init(object sender, EventArgs e)
{
Page.InitComplete += new EventHandler(InitComplete);
}
void InitComplete(object sender, System.EventArgs e)
{
_manager = WebPartManager.GetCurrentWebPartManager(Page);
String browseModeName = WebPartManager.BrowseDisplayMode.Name;
// Fill the dropdown with the names of supported display modes.
foreach (WebPartDisplayMode mode in _manager.SupportedDisplayModes)
{
String modeName = mode.Name;
// Make sure a mode is enabled before adding it.
if (mode.IsEnabled(_manager))
{
ListItem item = new ListItem(modeName, modeName);
DisplayModeDropdown.Items.Add(item);
}
}
// If shared scope is allowed for this user, display the scope-switching
// UI and select the appropriate radio button for the current user scope.
if (_manager.Personalization.CanEnterSharedScope)
{
Panel2.Visible = true;
if (_manager.Personalization.Scope == PersonalizationScope.User)
RadioButton1.Checked = true;
else
RadioButton2.Checked = true;
}
}
// Change the page to the selected display mode.
void DisplayModeDropdown_SelectedIndexChanged(object sender, EventArgs e)
{
String selectedMode = DisplayModeDropdown.SelectedValue;
WebPartDisplayMode mode = _manager.SupportedDisplayModes[selectedMode];
if (mode != null)
_manager.DisplayMode = mode;
}
// Set the selected item equal to the current display mode.
void Page_PreRender(object sender, EventArgs e)
{
ListItemCollection items = DisplayModeDropdown.Items;
int selectedIndex =
items.IndexOf(items.FindByText(_manager.DisplayMode.Name));
DisplayModeDropdown.SelectedIndex = selectedIndex;
}
// Reset all of a user's personalization data for the page.
protected void LinkButton1_Click(object sender, EventArgs e)
{
_manager.Personalization.ResetPersonalizationState();
}
// If not in User personalization scope, toggle into it.
protected void RadioButton1_CheckedChanged(object sender, EventArgs e)
{
if (_manager.Personalization.Scope == PersonalizationScope.Shared)
_manager.Personalization.ToggleScope();
}
// If not in Shared scope, and if user is allowed, toggle the scope.
protected void RadioButton2_CheckedChanged(object sender, EventArgs e)
{
if (_manager.Personalization.CanEnterSharedScope &&
_manager.Personalization.Scope == PersonalizationScope.User)
_manager.Personalization.ToggleScope();
}
</script>
<div>
<asp:Panel ID="Panel1" runat="server"
Borderwidth="1"
Width="230"
BackColor="lightgray"
Font-Names="Verdana, Arial, Sans Serif" >
<asp:Label ID="Label1" runat="server"
Text=" Display Mode"
Font-Bold="true"
Font-Size="8"
Width="120"
AssociatedControlID="DisplayModeDropdown"/>
<asp:DropDownList ID="DisplayModeDropdown" runat="server"
AutoPostBack="true"
Width="120"
OnSelectedIndexChanged="DisplayModeDropdown_SelectedIndexChanged" />
<asp:LinkButton ID="LinkButton1" runat="server"
Text="Reset User State"
ToolTip="Reset the current user's personalization data for the page."
Font-Size="8"
OnClick="LinkButton1_Click" />
<asp:Panel ID="Panel2" runat="server"
GroupingText="Personalization Scope"
Font-Bold="true"
Font-Size="8"
Visible="false" >
<asp:RadioButton ID="RadioButton1" runat="server"
Text="User"
AutoPostBack="true"
GroupName="Scope" OnCheckedChanged="RadioButton1_CheckedChanged" />
<asp:RadioButton ID="RadioButton2" runat="server"
Text="Shared"
AutoPostBack="true"
GroupName="Scope"
OnCheckedChanged="RadioButton2_CheckedChanged" />
</asp:Panel>
</asp:Panel>
</div>
<%@ control language="vb" classname="DisplayModeMenuVB"%>
<script runat="server">
' Use a field to reference the current WebPartManager.
Dim _manager As WebPartManager
Sub Page_Init(ByVal sender As Object, ByVal e As EventArgs)
AddHandler Page.InitComplete, AddressOf InitComplete
End Sub
Sub InitComplete(ByVal sender As Object, ByVal e As System.EventArgs)
_manager = WebPartManager.GetCurrentWebPartManager(Page)
Dim browseModeName As String = WebPartManager.BrowseDisplayMode.Name
' Fill the dropdown with the names of supported display modes.
Dim mode As WebPartDisplayMode
For Each mode In _manager.SupportedDisplayModes
Dim modeName As String = mode.Name
' Make sure a mode is enabled before adding it.
If mode.IsEnabled(_manager) Then
Dim item As New ListItem(modeName, modeName)
DisplayModeDropdown.Items.Add(item)
End If
Next mode
' If shared scope is allowed for this user, display the scope-switching
' UI and select the appropriate radio button for the current user scope.
If _manager.Personalization.CanEnterSharedScope Then
Panel2.Visible = True
If _manager.Personalization.Scope = PersonalizationScope.User Then
RadioButton1.Checked = True
Else
RadioButton2.Checked = True
End If
End If
End Sub
' Change the page to the selected display mode.
Sub DisplayModeDropdown_SelectedIndexChanged(ByVal sender As Object, _
ByVal e As EventArgs)
Dim selectedMode As String = DisplayModeDropdown.SelectedValue
Dim mode As WebPartDisplayMode = _
_manager.SupportedDisplayModes(selectedMode)
If Not (mode Is Nothing) Then
_manager.DisplayMode = mode
End If
End Sub
' Set the selected item equal to the current display mode.
Sub Page_PreRender(ByVal sender As Object, ByVal e As EventArgs)
Dim items As ListItemCollection = DisplayModeDropdown.Items
Dim selectedIndex As Integer = _
items.IndexOf(items.FindByText(_manager.DisplayMode.Name))
DisplayModeDropdown.SelectedIndex = selectedIndex
End Sub
' Reset all of a user's personalization data for the page.
Protected Sub LinkButton1_Click(ByVal sender As Object, _
ByVal e As EventArgs)
_manager.Personalization.ResetPersonalizationState()
End Sub
' If not in User personalization scope, toggle into it.
Protected Sub RadioButton1_CheckedChanged(ByVal sender As Object, _
ByVal e As EventArgs)
If _manager.Personalization.Scope = PersonalizationScope.Shared Then
_manager.Personalization.ToggleScope()
End If
End Sub
' If not in Shared scope, and if user is allowed, toggle the scope.
Protected Sub RadioButton2_CheckedChanged(ByVal sender As Object, _
ByVal e As EventArgs)
If _manager.Personalization.CanEnterSharedScope AndAlso _
_manager.Personalization.Scope = PersonalizationScope.User Then
_manager.Personalization.ToggleScope()
End If
End Sub
</script>
<div>
<asp:Panel ID="Panel1" runat="server"
Borderwidth="1"
Width="230"
BackColor="lightgray"
Font-Names="Verdana, Arial, Sans Serif" >
<asp:Label ID="Label1" runat="server"
Text=" Display Mode"
Font-Bold="true"
Font-Size="8"
Width="120"
AssociatedControlID="DisplayModeDropdown"/>
<asp:DropDownList ID="DisplayModeDropdown" runat="server"
AutoPostBack="true"
Width="120"
OnSelectedIndexChanged="DisplayModeDropdown_SelectedIndexChanged" />
<asp:LinkButton ID="LinkButton1" runat="server"
Text="Reset User State"
ToolTip="Reset the current user's personalization data for the page."
Font-Size="8"
OnClick="LinkButton1_Click" />
<asp:Panel ID="Panel2" runat="server"
GroupingText="Personalization Scope"
Font-Bold="true"
Font-Size="8"
Visible="false" >
<asp:RadioButton ID="RadioButton1" runat="server"
Text="User"
AutoPostBack="true"
GroupName="Scope" OnCheckedChanged="RadioButton1_CheckedChanged" />
<asp:RadioButton ID="RadioButton2" runat="server"
Text="Shared"
AutoPostBack="true"
GroupName="Scope"
OnCheckedChanged="RadioButton2_CheckedChanged" />
</asp:Panel>
</asp:Panel>
</div>
Het tweede deel van het codevoorbeeld is de broncode voor de interface en besturingselementen. Het bronbestand bevat een eenvoudige interface met de naam IZipCode. Er is ook een klasse met de WebPart naam ZipCodeWebPart die de interface implementeert en fungeert als het providerbeheer. De ProvideIZipCode methode is de callback-methode die het enige lid van de interface implementeert. De methode retourneert gewoon een exemplaar van de interface. Houd er rekening mee dat de methode is gemarkeerd met een ConnectionProvider kenmerk in de metagegevens. Dit is het mechanisme voor het identificeren van de methode als de callback-methode voor het verbindingspunt van de provider. De andere WebPart klasse heeft de naam WeatherWebParten fungeert als de consument voor de verbinding. Deze klasse heeft een methode met de naam GetZipCode die een exemplaar van de IZipCode interface ophaalt uit het besturingselement van de provider. Houd er rekening mee dat deze methode is gemarkeerd als de verbindingspuntmethode van de consument met een ConnectionConsumer kenmerk in de metagegevens.
Als u het codevoorbeeld wilt uitvoeren, moet u deze broncode compileren. U kunt deze expliciet compileren en de resulterende assembly in de map Bin van uw website of de globale assemblycache plaatsen. U kunt de broncode ook in de map App_Code van uw site plaatsen, waar deze dynamisch wordt gecompileerd tijdens runtime. In dit codevoorbeeld wordt dynamische compilatie gebruikt. Zie Walkthrough: Een aangepast webserverbeheer ontwikkelen en gebruiken voor een overzicht van hoe u compileert.
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 Provider", "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 Consumer", "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 Provider", "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 Consumer", "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
Het derde deel van het codevoorbeeld is de webpagina. Bovenaan staan de Register instructies voor het gebruikersbesturingselement en de aangepaste WebPart besturingselementen. Omdat in het voorbeeld wordt uitgegaan van dynamische compilatie van de besturingselementen, moet de broncode voor de besturingselementen zich in een App_Code submap bevinden; de Register tag op de pagina verwijst alleen naar een willekeurig tagvoorvoegsel en de naamruimte van de besturingselementen. De aangepaste WebPart besturingselementen (de provider en consument) worden gedeclareerd binnen het element van <asp:webpartzone> de webpagina, binnen een <zonetemplate> element.
De pagina biedt drie manieren om een verbinding te vormen tussen de aangepaste besturingselementen. De eerste methode is declaratief. In de markering voor de pagina wordt een <StaticConnections> element gedeclareerd, en binnen dat is een <asp:WebPartConnections> element, met de verschillende details van de consument en provider van de verbinding die is opgegeven als kenmerken. Dit is een manier om een verbinding te maken door deze rechtstreeks op de webpagina te declareren, met name binnen het <asp:WebPartManager> element. Vanwege deze statische verbinding wordt er direct een verbinding gemaakt tussen de twee aangepaste besturingselementen wanneer de pagina voor het eerst wordt geladen.
Een tweede methode voor het vormen van een verbinding tussen de besturingselementen wordt geleverd door het <asp:connectionszone> element op de pagina. Als een gebruiker tijdens runtime een pagina overschakelt naar de weergavemodus voor verbinding en op een verbindingswerkwoord klikt op een van de aangepaste besturingselementen, wordt de <asp:connectionszone> gebruikersinterface automatisch weergegeven voor het maken van een verbinding.
Op de pagina ziet u ook een derde manier om een verbinding te maken. Dit is via een programma. In de Button1_Click methode maakt de code een ProviderConnectionPoint object voor het besturingselement van de provider en haalt de details van het verbindingspunt op door de GetProviderConnectionPoints methode aan te roepen. Het voert een vergelijkbare taak uit voor het consumentenbeheer, waarbij de methode wordt GetConsumerConnectionPoints aangeroepen. Ten slotte wordt het nieuwe WebPartConnection object gemaakt door de ConnectWebParts methode op het WebPartManager besturingselement aan te roepen.
<%@ Page Language="C#" %>
<%@ Register TagPrefix="uc1"
TagName="DisplayModeMenuCS"
Src="~/displaymodemenucs.ascx" %>
<%@ Register TagPrefix="aspSample"
Namespace="Samples.AspNet.CS.Controls" %>
<!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 Button1_Click(object sender, EventArgs e)
{
ProviderConnectionPoint provPoint =
mgr.GetProviderConnectionPoints(zip1)["ZipCodeProvider"];
ConsumerConnectionPoint connPoint =
mgr.GetConsumerConnectionPoints(weather1)["ZipCodeConsumer"];
WebPartConnection conn1 = mgr.ConnectWebParts(zip1, provPoint,
weather1, connPoint);
}
protected void mgr_DisplayModeChanged(object sender,
WebPartDisplayModeEventArgs e)
{
if (mgr.DisplayMode == WebPartManager.ConnectDisplayMode)
Button1.Visible = true;
else
Button1.Visible = false;
}
</script>
<html xmlns="http://www.w3.org/1999/xhtml" >
<head runat="server">
<title>Untitled Page</title>
</head>
<body>
<form id="form1" runat="server">
<div>
<asp:WebPartManager ID="mgr" runat="server"
OnDisplayModeChanged="mgr_DisplayModeChanged">
<StaticConnections>
<asp:WebPartConnection ID="conn1"
ConsumerConnectionPointID="ZipCodeConsumer"
ConsumerID="weather1"
ProviderConnectionPointID="ZipCodeProvider"
ProviderID="zip1" />
</StaticConnections>
</asp:WebPartManager>
<uc1:DisplayModeMenuCS ID="menu1" runat="server" />
<asp:WebPartZone ID="WebPartZone1" runat="server">
<ZoneTemplate>
<aspSample:ZipCodeWebPart ID="zip1" runat="server"
Title="Zip Code Provider" />
<aspSample:WeatherWebPart ID="weather1" runat="server"
Title="Zip Code Consumer" />
</ZoneTemplate>
</asp:WebPartZone>
<asp:ConnectionsZone ID="ConnectionsZone1" runat="server">
</asp:ConnectionsZone>
<asp:Button ID="Button1" runat="server"
Text="Connect WebPart Controls"
OnClick="Button1_Click"
Visible="false" />
</div>
</form>
</body>
</html>
<%@ Page Language="vb" %>
<%@ Register TagPrefix="uc1"
TagName="DisplayModeMenuVB"
Src="~/displaymodemenuvb.ascx" %>
<%@ Register TagPrefix="aspSample"
Namespace="Samples.AspNet.VB.Controls" %>
<!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 Button1_Click(ByVal sender As Object, _
ByVal e As System.EventArgs)
Dim provPoint As ProviderConnectionPoint = _
mgr.GetProviderConnectionPoints(zip1)("ZipCodeProvider")
Dim connPoint As ConsumerConnectionPoint = _
mgr.GetConsumerConnectionPoints(weather1)("ZipCodeConsumer")
mgr.ConnectWebParts(zip1, provPoint, weather1, connPoint)
End Sub
Protected Sub mgr_DisplayModeChanged (ByVal sender as Object, _
ByVal e as WebPartDisplayModeEventArgs)
If mgr.DisplayMode Is WebPartManager.ConnectDisplayMode Then
Button1.Visible = True
Else
Button1.Visible = False
End If
End Sub
</script>
<html xmlns="http://www.w3.org/1999/xhtml" >
<head runat="server">
<title>Untitled Page</title>
</head>
<body>
<form id="form1" runat="server">
<div>
<asp:WebPartManager ID="mgr" runat="server"
OnDisplayModeChanged="mgr_DisplayModeChanged">
<StaticConnections>
<asp:WebPartConnection ID="conn1"
ConsumerConnectionPointID="ZipCodeConsumer"
ConsumerID="weather1"
ProviderConnectionPointID="ZipCodeProvider"
ProviderID="zip1" />
</StaticConnections>
</asp:WebPartManager>
<uc1:DisplayModeMenuVB ID="menu1" runat="server" />
<asp:WebPartZone ID="WebPartZone1" runat="server">
<ZoneTemplate>
<aspSample:ZipCodeWebPart ID="zip1" runat="server"
Title="Zip Code Provider" />
<aspSample:WeatherWebPart ID="weather1" runat="server"
Title="Zip Code Consumer" />
</ZoneTemplate>
</asp:WebPartZone>
<asp:ConnectionsZone ID="ConnectionsZone1" runat="server">
</asp:ConnectionsZone>
<asp:Button ID="Button1" runat="server"
Text="Connect WebPart Controls"
OnClick="Button1_Click"
Visible="false" />
</div>
</form>
</body>
</html>
Nadat u de webpagina in een browser hebt geladen, bestaat de eerste verbinding al omdat deze is gedeclareerd binnen het <StaticConnections> element. Voer tekst in het besturingselement Postcodeprovider in en deze wordt weergegeven in het besturingselement van de consument. Koppel vervolgens de twee besturingselementen los. Wijzig met behulp van het besturingselement voor de vervolgkeuzelijst Weergavemodus de pagina om de weergavemodus te verbinden. Klik op het menu Werkwoorden (vertegenwoordigd door een pijl-omlaag in de titelbalk) voor elk van de WebPart besturingselementen en u ziet dat elk een verbindingsoptie heeft. Dit is een verbindingswerkwoord, dat alleen in het menu werkwoorden wordt weergegeven wanneer de pagina zich in de verbindingsmodus bevindt. Klik op de verbindingsopdracht op een van de besturingselementen en de verbindingsinterface van het ConnectionsZone besturingselement wordt weergegeven. Klik op de knop Verbinding verbreken om de statische verbinding tussen de besturingselementen te beëindigen. Gebruik het besturingselement Weergavemodus om de pagina te retourneren om door de bladermodus te bladeren. Probeer opnieuw nieuwe tekst in de provider in te voeren en houd er rekening mee dat omdat de besturingselementen zijn verbroken, de tekst niet kan worden bijgewerkt in het besturingselement van de consument.
Gebruik vervolgens dezelfde methode als hierboven om de pagina opnieuw over te schakelen naar de weergavemodus voor verbinding. Klik op een verbindingswoord op een van de besturingselementen. Klik op de koppeling Een verbinding maken en gebruik de gebruikersinterface van het ConnectionsZone besturingselement om een verbinding tussen de besturingselementen te maken. Dit is de tweede methode voor het maken van een verbinding. Zodra de verbinding tot stand is gebracht, wordt de laatste tekenreeks die u hebt ingevoerd in het providerbesturingselement (dat niet kan worden weergegeven omdat de besturingselementen zijn verbroken) plotseling weergegeven in de consument, omdat de verbinding opnieuw is gemaakt. Klik op de knop Verbinding verbreken om de huidige verbinding te beëindigen die u zojuist hebt gemaakt. Retourneer de pagina om door de bladermodus te bladeren. Voer een aantal nieuwe tekst in de provider in om aan te tonen dat de tekst niet wordt bijgewerkt en dat de besturingselementen opnieuw zijn losgekoppeld.
Retourneer de pagina om de weergavemodus te verbinden. In plaats van op een verbindingswerkwoord te klikken, klikt u op de knop Webonderdeelbesturingselementen verbinden, die de derde methode voor het vormen van een verbinding illustreert. Deze methode verbindt de besturingselementen programmatisch in één eenvoudige stap zonder dat u het ConnectionsZone besturingselement hoeft te gebruiken. Houd er rekening mee dat wanneer de verbinding wordt gemaakt, de laatste tekenreeks die u in de provider hebt ingevoerd, plotseling wordt weergegeven in het besturingselement van de consument.
Opmerkingen
In de besturingsset webonderdelen is een verbinding een koppeling of koppeling tussen twee WebPart (of andere server- of gebruikers) besturingselementen waarmee ze gegevens kunnen delen. Door deze mogelijkheid om gegevens te delen, kunnen verbonden besturingselementen worden gebruikt op manieren die de functionaliteit van de geïsoleerde besturingselementen overschrijden. Als één besturingselement bijvoorbeeld postcodegegevens levert en een ander besturingselement die gegevens kan lezen en lokale weerinformatie kan leveren op basis van de postcode, biedt de verbonden mogelijkheid van de twee besturingselementen meer waarde voor gebruikers. Als u dit voorbeeld wilt uitbreiden, kunnen andere besturingselementen worden gemaakt die ook informatie weergeven op basis van een postcode, zoals een besturingselement met koppelingen naar lokaal nieuws en al deze besturingselementen die kunnen werken met postcodegegevens, kunnen gegevens delen met het ene besturingselement dat een postcode biedt. Eindgebruikers van webonderdelentoepassingen kunnen verbindingen maken en beheren tussen dergelijke compatibele besturingselementen rechtstreeks vanuit een webbrowser, met behulp van de standaardgebruikersinterface (UI) van het ConnectionsZone besturingselement of met behulp van een aangepaste gebruikersinterface die wordt geleverd door een ontwikkelaar.
Dit WebPartConnection klassenoverzicht is een algemene instructie van de basisdetails voor het maken van een verbinding. Zie Overzicht van webonderdelenverbindingen voor specifieke onderdelen en vereisten voor het maken van verbindingen of de referentieklassen en codevoorbeelden die in de volgende discussie worden vermeld. Er zijn verschillende fundamentele aspecten van een verbinding met webonderdelen:
Twee WebPart besturingselementen. Elke verbinding met webonderdelen bestaat uit twee besturingselementen. Het is mogelijk dat een besturingselement tegelijkertijd deelneemt aan meer dan één verbinding, maar elke verbinding bestaat uit precies twee besturingselementen. De besturingselementen kunnen rechtstreeks worden afgeleid van de WebPart basisklasse, of ze kunnen andere serverbesturingselementen zijn, waaronder ASP.NET besturingselementen, aangepaste serverbesturingselementen en gebruikersbesturingselementen. Besturingselementen die niet zijn afgeleid van de WebPart klasse, als ze in een WebPartZoneBase zone worden geplaatst, worden automatisch verpakt met een GenericWebPart object tijdens runtime, waardoor ze kunnen overnemen van de WebPart klasse en kunnen functioneren als runtime-besturingselementen WebPart .
Besturingselementen die zich in WebPartZoneBase zones bevinden. Zowel WebPart besturingselementen als elk ander type serverbesturingselement moeten zich in een WebPartZoneBase zone bevinden om deel te kunnen nemen aan verbindingen met webonderdelen (en de meeste andere functies voor webonderdelen).
Consumenten en providers. In elke verbinding met webonderdelen zijn er twee besturingselementen: een gegevensprovider en een consument van gegevens. De provider verstrekt gegevens aan de consument via een opgegeven callbackmethode die gegevens retourneert in de vorm van een interface. (Zie de sectie Voorbeeld van dit onderwerp voor een voorbeeld van het maken en opgeven van de callback-methode.) Deze callback-methode wordt een providerverbindingspunt genoemd. De details van dit verbindingspunt (de beschrijvende naam, een id en het type van de geretourneerde interface) zijn opgenomen in een ProviderConnectionPoint object dat is gekoppeld aan het besturingselement van de provider. De consument ontvangt de gegevens via een opgegeven methode die een exemplaar van de interface kan accepteren. Deze methode wordt een verbindingspunt voor consumenten genoemd en de details van het verbindingspunt (naam, id en type interface) zijn opgenomen in een ConsumerConnectionPoint object dat is gekoppeld aan het consumentenbeheer.
Compatibele besturingselementen of een geldige transformator. Een verbinding werkt alleen als de consument en de provider compatibel zijn (wat betekent dat de opgegeven verbindingspuntmethoden met hetzelfde type interface kunnen werken), of dat er een WebPartTransformer object moet zijn dat het door de provider aangeboden type kan omzetten in een type dat door de consument wordt begrepen.
Een WebPartConnection-object. Er moet een instantie van de WebPartConnection klasse zijn die verwijzingen naar de provider- en consumentenbesturingselementen bevat, samen met de details van de verbindingspunten. Als de provider en consument niet compatibel zijn en in plaats daarvan een WebPartTransformer object gebruiken om verbinding te maken, verwijst de verbinding naar de transformator.
Een middel om de verbinding tot stand te brengen. Nadat compatibele besturingselementen voor consumenten en providers goed zijn ontworpen met verbindingspuntmethoden en in een zone zijn geplaatst en een WebPartConnection object beschikbaar is, is de laatste basisstap die nodig is om de verbinding te starten. Een manier waarop dit kan gebeuren, is dat gebruikers de verbinding via de gebruikersinterface kunnen maken. Als u een
<asp:connectionszone>element op de pagina plaatst en de andere vereiste onderdelen voor een verbinding aanwezig zijn, kan een gebruiker de pagina tijdens runtime overschakelen naar de weergavemodus Voor verbinding, klikt u op een verbindingswerkwoord in het werkwoordmenu van de provider of consument en wordt er een verbindingsinterface (op basis van het ConnectionsZone besturingselement) weergegeven. Via deze gebruikersinterface kan de gebruiker de verbinding initiëren. Een andere manier om de verbinding te initiëren, is programmatisch te doen. In beide gevallen, hetzij via de gebruikersinterface of via een programma, is de onderliggende methode waarmee de verbinding wordt gestart, hetzelfde. De toepassing roept de ConnectWebParts methode (of de ConnectWebParts methode aan als u een transformator gebruikt) op het WebPartManager besturingselement, waarbij deze wordt doorgegeven aan de provider, de consument en de respectieve verbindingspuntobjecten, en de methode retourneert een WebPartConnection object.
De WebPartConnection klasse definieert een object dat de essentiële details van een verbinding tussen twee WebPart besturingselementen inkapselt. De klasse bestaat bijna volledig uit eigenschappen met betrekking tot de details van een bepaalde verbinding. Verschillende eigenschappen hebben betrekking op het consumentenbeheer in een verbinding. De Consumer eigenschap verwijst naar het consumentenbesturingselement zelf en de ConsumerID eigenschap verwijst naar de id van de consument. Naar ConsumerConnectionPoint het object, dat de details van het verbindingspunt van de consument bevat, wordt verwezen naar de eigenschap van ConsumerConnectionPoint de consument. De ConsumerConnectionPointID eigenschap verwijst naar de id van het ConsumerConnectionPoint object. Al deze aan consumenten gerelateerde verbindingseigenschappen moeten een waarde hebben die aan hen is toegewezen om een verbinding te maken.
De WebPartConnection klasse heeft ook verschillende eigenschappen die betrekking hebben op het besturingselement van de provider in een verbinding, en deze komen overeen met de eigenschappen voor een consument. De Provider eigenschap verwijst naar het besturingselement van de provider zelf, terwijl de eigenschap verwijst naar de ProviderID id. De ProviderConnectionPoint eigenschap verwijst naar het ProviderConnectionPoint object en de ProviderConnectionPointID eigenschap verwijst naar de id van het verbindingspunt van de provider.
Verschillende eigenschappen hebben betrekking op de status van de verbinding. De IsActive eigenschap geeft aan of de verbinding actief is (momenteel gegevens uitwisselen) of inactief (nog steeds verbonden maar niet actief gegevens deelt). De IsShared eigenschap geeft aan of de verbinding een gedeelde verbinding is (beschikbaar voor alle gebruikers van een pagina) of een gebruikersspecifieke verbinding, en de IsStatic eigenschap geeft aan of het besturingselement statisch is (gedeclareerd in de paginamarkeringen en dus permanent) of dynamisch (programmatisch gemaakt, wat betekent dat het kan worden verwijderd).
Constructors
| Name | Description |
|---|---|
| WebPartConnection() |
Initialiseert een nieuw exemplaar van de WebPartConnection klasse. |
Eigenschappen
| Name | Description |
|---|---|
| Consumer |
Hiermee haalt u een WebPart object op dat fungeert als het consumentenbeheer in een verbinding. |
| ConsumerConnectionPoint |
Hiermee haalt u het object op dat fungeert als verbindingspunt voor een besturingselement dat als consument in een verbinding fungeert. |
| ConsumerConnectionPointID |
Hiermee wordt de eigenschapswaarde opgehaald of ingesteld voor een verbinding die verwijst naar de id van het object dat fungeert als het verbindingspunt van de consument voor die verbinding. |
| ConsumerID |
Hiermee wordt de eigenschapswaarde opgehaald of ingesteld voor een verbinding die verwijst naar de id van het WebPart besturingselement die fungeert als consument voor die verbinding. |
| ID |
Hiermee wordt de id van een WebPartConnection object opgehaald of ingesteld. |
| IsActive |
Hiermee wordt een waarde opgehaald die aangeeft of een WebPartConnection object momenteel tot stand is gebracht en gegevens kan uitwisselen tussen de provider en de besturingselementen van de consument. |
| IsShared |
Hiermee wordt een waarde opgehaald die aangeeft of een WebPartConnection object zichtbaar is voor alle gebruikers of alleen voor de huidige gebruiker. |
| IsStatic |
Hiermee wordt een waarde opgehaald die aangeeft of een WebPartConnection object wordt gedeclareerd in de markering van een webpagina of programmatisch is gemaakt. |
| Provider |
Hiermee haalt u een WebPart besturingselement op dat fungeert als de provider in een verbinding met webonderdelen. |
| ProviderConnectionPoint |
Hiermee haalt u het object op dat fungeert als verbindingspunt voor een WebPart besturingselement dat fungeert als provider voor een verbinding. |
| ProviderConnectionPointID |
Hiermee wordt de eigenschapswaarde opgehaald of ingesteld voor een verbinding die verwijst naar de id van het object dat fungeert als het verbindingspunt van de provider voor die verbinding. |
| ProviderID |
Hiermee wordt de eigenschapswaarde opgehaald of ingesteld voor een verbinding die verwijst naar de id van het WebPart besturingselement die fungeert als provider voor die verbinding. |
| Transformer |
Hiermee wordt een WebPartTransformer object opgehaald dat wordt gebruikt om gegevens te transformeren tussen twee, anders incompatibele verbindingspunten in een verbinding met webonderdelen. |
| Transformers |
Hiermee haalt u een verzameling objecten op die WebPartTransformer intern worden gebruikt door de besturingsset webonderdelen. |
Methoden
| Name | Description |
|---|---|
| Equals(Object) |
Bepaalt of het opgegeven object gelijk is aan het huidige object. (Overgenomen van Object) |
| GetHashCode() |
Fungeert als de standaardhashfunctie. (Overgenomen van Object) |
| GetType() |
Hiermee haalt u de Type huidige instantie op. (Overgenomen van Object) |
| MemberwiseClone() |
Hiermee maakt u een ondiepe kopie van de huidige Object. (Overgenomen van Object) |
| ToString() |
Overschrijft de overgenomen ToString() methode en retourneert een korte typenaam voor het verbindingsobject. |