WebPartConnection Klass
Definition
Viktigt
En del information gäller för förhandsversionen av en produkt och kan komma att ändras avsevärt innan produkten blir allmänt tillgänglig. Microsoft lämnar inga garantier, uttryckliga eller underförstådda, avseende informationen som visas här.
Tillhandahåller ett objekt som gör att två WebPart kontroller kan bilda en anslutning. Det går inte att ärva den här klassen.
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
- Arv
-
WebPartConnection
- Attribut
Exempel
I följande kodexempel visas hur du skapar en enkel anslutning mellan två WebPart kontroller. Exemplet visar tre sätt att skapa en anslutning: deklarativt genom att placera taggar för anslutningen i markering av webbsidan; programmatiskt genom att skapa anslutningen i koden; och via användargränssnittet genom att placera en ConnectionsZone kontroll på sidan, vilket gör det möjligt för användare att upprätta en anslutning.
Kodexemplet har fyra delar:
En användarkontroll som gör att du kan ändra visningsläget för webbdelar på en sida.
Källkod för ett gränssnitt och två WebPart kontroller som fungerar som provider och konsument för en anslutning.
En webbsida som är värd för alla kontroller och kör kodexemplet.
En förklaring av hur du kör exempelsidan.
Den första delen av det här kodexemplet är användarkontrollen som gör det möjligt för användare att ändra visningslägen på en webbsida. Spara följande källkod i en .ascx-fil, vilket ger den det filnamn som har tilldelats till Src -attributet för direktivet för den Register här användarkontrollen, som ligger längst upp på värdwebbsidan. Mer information om visningslägen och en beskrivning av källkoden i den här kontrollen finns i Genomgång: Ändra visningslägen på en webbsida.
<%@ 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>
Den andra delen av kodexemplet är källkoden för gränssnittet och kontrollerna. Källfilen innehåller ett enkelt gränssnitt med namnet IZipCode. Det finns också en WebPart klass med namnet ZipCodeWebPart som implementerar gränssnittet och fungerar som providerkontroll. Dess ProvideIZipCode metod är återanropsmetoden som implementerar gränssnittets enda medlem. Metoden returnerar helt enkelt en instans av gränssnittet. Observera att metoden har markerats med ett ConnectionProvider attribut i dess metadata. Det här är mekanismen för att identifiera metoden som återanropsmetod för providerns anslutningspunkt. Den andra WebPart klassen heter WeatherWebPartoch fungerar som konsument för anslutningen. Den här klassen har en metod med namnet GetZipCode som hämtar en instans av IZipCode gränssnittet från providerkontrollen. Observera att den här metoden är markerad som konsumentens anslutningspunktsmetod med ett ConnectionConsumer attribut i dess metadata.
För att kodexemplet ska köras måste du kompilera den här källkoden. Du kan kompilera den explicit och placera den resulterande sammansättningen i webbplatsens bin-mapp eller den globala sammansättningscacheminnet. Du kan också placera källkoden i webbplatsens App_Code mapp, där den kompileras dynamiskt vid körning. I det här kodexemplet används dynamisk kompilering. En genomgång som visar hur du kompilerar finns i Genomgång: Utveckla och använda en anpassad webbserverkontroll.
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
Den tredje delen av kodexemplet är webbsidan. Längst upp finns direktiven Register för användarkontrollen och de anpassade WebPart kontrollerna. Eftersom exemplet förutsätter dynamisk kompilering av kontrollerna bör källkoden för kontrollerna finnas i en App_Code undermapp. taggen Register på sidan refererar endast till ett godtyckligt taggprefix och kontrollernas namnområde. De anpassade WebPart kontrollerna (providern och konsumenten) deklareras i webbsidans <asp:webpartzone> element i ett <zonetemplate> element.
Sidan innehåller tre sätt att skapa en anslutning mellan de anpassade kontrollerna. Den första metoden är deklarativ. I pålägget för sidan deklareras ett <StaticConnections> element, och inom det finns ett <asp:WebPartConnections> element, med olika konsument- och providerinformation om anslutningen som anges som attribut. Det här är ett sätt att skapa en anslutning genom att deklarera den direkt på webbsidan, särskilt i elementet <asp:WebPartManager> . På grund av den här statiska anslutningen skapas en anslutning mellan de två anpassade kontrollerna direkt första gången sidan läses in.
En andra metod för att skapa en anslutning mellan kontrollerna tillhandahålls av elementet <asp:connectionszone> på sidan. Om en användare växlar en sida till anslutet visningsläge vid körning och klickar på ett anslutningsverb på en av de anpassade kontrollerna, renderar elementet <asp:connectionszone> automatiskt användargränssnittet för att skapa en anslutning.
Sidan visar också ett tredje sätt att skapa en anslutning, vilket är att göra det programmatiskt.
Button1_Click I -metoden skapar koden ett ProviderConnectionPoint objekt för providerkontrollen och hämtar dess anslutningsplatsinformation genom att anropa GetProviderConnectionPoints metoden. Den utför en liknande uppgift för konsumentkontrollen och anropar GetConsumerConnectionPoints metoden. Slutligen skapar den det nya WebPartConnection objektet genom att anropa ConnectWebParts -metoden på WebPartManager kontrollen.
<%@ 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>
När du har läst in webbsidan i en webbläsare finns den första anslutningen redan eftersom den deklareras i elementet <StaticConnections> . Ange text i postnummerproviderkontrollen så visas den i konsumentkontrollen. Koppla sedan från de två kontrollerna. Använd listrutan Visningsläge och ändra sidan för att ansluta visningsläget. Klicka på verbmenyn (representeras av en nedåtpil i namnlisten) för var och en av WebPart kontrollerna och observera att var och en har ett Connect-alternativ . Det här är ett anslutningsverb som endast visas i verbmenyn när sidan är i anslutningsläge. Klicka på anslutningsverb på en av kontrollerna och anslutningsgränssnittet som tillhandahålls av ConnectionsZone kontrollen visas. Klicka på knappen Koppla från för att avsluta den statiska anslutningen mellan kontrollerna. Använd kontrollen Visningsläge för att returnera sidan för att bläddra. Försök att ange ny text i providern igen och observera att eftersom kontrollerna är frånkopplade kan texten inte uppdateras i konsumentkontrollen.
Använd sedan samma metod som ovan för att växla sidan till anslut visningsläge igen. Klicka på ett anslutningsverb på en av kontrollerna. Klicka på länken Skapa en anslutning och använd användargränssnittet som tillhandahålls av ConnectionsZone kontrollen för att skapa en anslutning mellan kontrollerna. Det här är den andra metoden för att skapa en anslutning. Observera att så snart anslutningen har skapats visas den sista strängen som du angav i providerkontrollen (som inte visades eftersom kontrollerna var frånkopplade) plötsligt i konsumenten eftersom anslutningen har återskapats. Klicka på knappen Koppla från för att avsluta den aktuella anslutningen som du nyss skapade. Gå tillbaka till bläddra-läget. Ange en ny text i providern för att visa att texten inte har uppdaterats och att kontrollerna är frånkopplade igen.
Gå tillbaka till sidan för att ansluta visningsläget. I stället för att klicka på ett anslutningsverb klickar du på knappen Anslut webbdelskontroller , som illustrerar den tredje metoden för att bilda en anslutning. Den här metoden ansluter kontrollerna programmatiskt i ett enkelt steg utan att behöva använda ConnectionsZone kontrollen. Observera att när anslutningen skapas visas den sista strängen som du angav i providern plötsligt i konsumentkontrollen.
Kommentarer
I kontrolluppsättningen Webbdelar är en anslutning en länk eller association mellan två WebPart (eller andra server- eller användarkontroller) som gör att de kan dela data. Den här möjligheten att dela data gör att anslutna kontroller kan användas på sätt som överskrider de funktioner som erbjuds av de isolerade kontrollerna. Om en kontroll till exempel tillhandahåller postnummerdata och en annan kontroll kan läsa dessa data och tillhandahålla lokal väderinformation baserat på postnumret, ger den anslutna funktionen för de två kontrollerna mer värde för användarna. För att utöka det här exemplet kan andra kontroller skapas som också visar information baserat på ett postnummer, till exempel en kontroll med länkar till lokala nyheter, och alla dessa kontroller som kan fungera med postnummerdata kan dela data med den enda kontroll som tillhandahåller ett postnummer. Slutanvändare av webbdelsprogram kan skapa och hantera anslutningar mellan alla sådana kompatibla kontroller direkt från en webbläsare, med hjälp av användargränssnittet för standardanslutningar som tillhandahålls av kontrollen eller med hjälp av ConnectionsZone ett anpassat användargränssnitt som tillhandahålls av en utvecklare.
Den här WebPartConnection klassöversikten är en allmän instruktion av grundläggande information för att skapa en anslutning. Mer information om specifika komponenter och krav som ingår i att skapa anslutningar finns i Översikt över webbdelsanslutningar, eller se referensklasser och kodexempel som nämns i följande diskussion. Det finns flera grundläggande aspekter av en webbdelsanslutning:
Två WebPart kontroller. Varje webbdelsanslutning består av två kontroller. Det är möjligt för en kontroll att delta i mer än en anslutning samtidigt, men varje enskild anslutning består av exakt två kontroller. Kontrollerna kan härledas direkt från basklassen WebPart, eller så kan de vara andra serverkontroller, inklusive ASP.NET kontroller, anpassade serverkontroller och användarkontroller. Kontroller som inte härleds från klassen, om de WebPart placeras i en WebPartZoneBase zon, omsluts automatiskt med ett GenericWebPart objekt vid körning, vilket gör att de WebPart kan ärva från klassen och fungera som körningskontroller WebPart .
Kontroller som finns i WebPartZoneBase zoner. Både WebPart kontroller och andra typer av serverkontroll måste finnas i en WebPartZoneBase zon för att kunna delta i webbdelsanslutningar (och de flesta andra webbdelar).
Konsumenter och leverantörer. I varje webbdelsanslutning finns det två kontroller: en leverantör av data och en datakonsument. Providern tillhandahåller data till konsumenten via en angiven återanropsmetod som returnerar data i form av ett gränssnitt. (Ett exempel på hur du skapar och anger återanropsmetoden finns i avsnittet Exempel i det här avsnittet.) Den här motringningsmetoden kallas för en provideranslutningspunkt. Informationen om den här anslutningspunkten (dess "egna" namn, ett ID och typen av det returnerade gränssnittet) finns i ett ProviderConnectionPoint objekt som är associerat med providerkontrollen. Konsumenten tar emot data via en angiven metod som kan acceptera en instans av gränssnittet. Den här metoden kallas för en konsumentanslutningspunkt och information om anslutningspunkten (namn, ID och typ av gränssnitt) finns i ett ConsumerConnectionPoint objekt som är associerat med konsumentkontrollen.
Kompatibla kontroller eller en giltig transformator. För att en anslutning ska fungera måste konsumenten och leverantören antingen vara kompatibla (vilket innebär att deras angivna anslutningspunktsmetoder kan fungera med samma typ av gränssnitt), eller så måste det finnas ett WebPartTransformer objekt som kan översätta den typ som leverantören erbjuder till en typ som konsumenten förstår.
Ett WebPartConnection objekt. För att en anslutning ska finnas måste det finnas en instans av WebPartConnection klassen som innehåller referenser till provider- och konsumentkontrollerna, tillsammans med information om deras anslutningspunkter. Om providern och konsumenten är inkompatibla och i stället använder ett WebPartTransformer objekt för att ansluta refererar anslutningen till transformatorn.
Ett sätt att upprätta anslutningen. När kompatibla konsument- och providerkontroller har utformats korrekt med anslutningspunktsmetoder och placerats i en zon, och ett WebPartConnection objekt är tillgängligt, är det sista grundläggande steget som krävs för att initiera anslutningen. Ett sätt att göra detta är att användarna skapar anslutningen via användargränssnittet. Om du placerar ett
<asp:connectionszone>element på sidan och de andra nödvändiga komponenterna för en anslutning är på plats, när en användare kan växla sidan till anslutet visningsläge, klickar du på ett anslutningsverb på verbmenyn för antingen providern eller konsumenten, och ett anslutningsgränssnitt (baserat på ConnectionsZone kontrollen) visas. Via det här användargränssnittet kan användaren initiera anslutningen. Ett annat sätt att initiera anslutningen är att göra det programmatiskt. I båda fallen, oavsett om det är via användargränssnittet eller programmässigt, är den underliggande metoden som initierar anslutningen densamma. Programmet anropar ConnectWebParts metoden (eller ConnectWebParts metoden om du använder en transformator) på WebPartManager kontrollen och skickar till den providern, konsumenten och deras respektive anslutningspunktsobjekt, och metoden returnerar ett WebPartConnection objekt.
Klassen WebPartConnection definierar ett objekt som kapslar in viktig information om en anslutning mellan två WebPart kontroller. Klassen består nästan helt av egenskaper som är relaterade till information om en viss anslutning. Flera egenskaper gäller konsumentkontrollen i en anslutning. Egenskapen Consumer refererar till själva konsumentkontrollen och ConsumerID egenskapen refererar till konsumentens ID. Objektet ConsumerConnectionPoint , som innehåller information om konsumentens anslutningspunkt, refereras av konsumentens ConsumerConnectionPoint egenskap. Egenskapen ConsumerConnectionPointID refererar till objektets ConsumerConnectionPoint ID. Alla dessa konsumentrelaterade anslutningsegenskaper måste ha tilldelats ett värde för att skapa en anslutning.
Klassen WebPartConnection har också flera egenskaper som är relaterade till providerkontrollen i en anslutning, och dessa motsvarar egenskaperna för en konsument. Egenskapen Provider refererar till själva providerkontrollen, medan ProviderID egenskapen refererar till dess ID. Egenskapen ProviderConnectionPoint refererar till objektet ProviderConnectionPoint och ProviderConnectionPointID egenskapen refererar till ID:t för providerns anslutningspunkt.
Flera egenskaper gäller anslutningens tillstånd. Egenskapen IsActive anger om anslutningen är aktiv (för närvarande utbyter data) eller inaktiv (fortfarande ansluten men inte aktivt delar data). Egenskapen IsShared anger om anslutningen är en delad (tillgänglig för alla användare av en sida) eller en användarspecifik anslutning, och IsStatic egenskapen anger om kontrollen är statisk (deklarerad i sidmarkeringen och därmed permanent) eller dynamisk (skapas programmatiskt, vilket innebär att den kan tas bort).
Konstruktorer
| Name | Description |
|---|---|
| WebPartConnection() |
Initierar en ny instans av WebPartConnection klassen. |
Egenskaper
| Name | Description |
|---|---|
| Consumer |
Hämtar ett WebPart objekt som fungerar som konsumentkontroll i en anslutning. |
| ConsumerConnectionPoint |
Hämtar objektet som fungerar som en anslutningspunkt för en kontroll som fungerar som konsument i en anslutning. |
| ConsumerConnectionPointID |
Hämtar eller anger egenskapsvärdet för en anslutning som refererar till ID:t för objektet som fungerar som konsumentanslutningspunkt för den anslutningen. |
| ConsumerID |
Hämtar eller anger egenskapsvärdet för en anslutning som refererar till ID:t för kontrollen WebPart som fungerar som konsument för den anslutningen. |
| ID |
Hämtar eller anger ID för ett WebPartConnection objekt. |
| IsActive |
Hämtar ett värde som anger om ett WebPartConnection objekt för närvarande har upprättats och kan utbyta data mellan providern och konsumentkontrollerna. |
| IsShared |
Hämtar ett värde som anger om ett WebPartConnection objekt är synligt för alla användare eller endast för den aktuella användaren. |
| IsStatic |
Hämtar ett värde som anger om ett WebPartConnection objekt deklareras i markering av en webbsida eller skapas programmatiskt. |
| Provider |
Hämtar en WebPart kontroll som fungerar som provider i en webbdelsanslutning. |
| ProviderConnectionPoint |
Hämtar objektet som fungerar som en anslutningspunkt för en WebPart kontroll som fungerar som leverantör för en anslutning. |
| ProviderConnectionPointID |
Hämtar eller anger egenskapsvärdet för en anslutning som refererar till ID:t för objektet som fungerar som provideranslutningspunkt för den anslutningen. |
| ProviderID |
Hämtar eller anger egenskapsvärdet för en anslutning som refererar till ID:t för kontrollen WebPart som fungerar som provider för den anslutningen. |
| Transformer |
Hämtar ett WebPartTransformer objekt som används för att transformera data mellan två annars inkompatibla anslutningspunkter i en webbdelsanslutning. |
| Transformers |
Hämtar en samling WebPartTransformer objekt som används internt av kontrolluppsättningen webbdelar. |
Metoder
| Name | Description |
|---|---|
| Equals(Object) |
Avgör om det angivna objektet är lika med det aktuella objektet. (Ärvd från Object) |
| GetHashCode() |
Fungerar som standard-hash-funktion. (Ärvd från Object) |
| GetType() |
Hämtar den aktuella instansen Type . (Ärvd från Object) |
| MemberwiseClone() |
Skapar en ytlig kopia av den aktuella Object. (Ärvd från Object) |
| ToString() |
Åsidosätter den ärvda ToString() metoden och returnerar ett kort typnamn för anslutningsobjektet. |