ConnectionProviderAttribute 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.
Identificeert de callback-methode in een serverbesturing die fungeert als de provider in een verbinding met webonderdelen en stelt ontwikkelaars in staat om details op te geven over het verbindingspunt van de provider.
public ref class ConnectionProviderAttribute : Attribute
[System.AttributeUsage(System.AttributeTargets.Method)]
public class ConnectionProviderAttribute : Attribute
[<System.AttributeUsage(System.AttributeTargets.Method)>]
type ConnectionProviderAttribute = class
inherit Attribute
Public Class ConnectionProviderAttribute
Inherits Attribute
- Overname
- Kenmerken
Voorbeelden
In het volgende codevoorbeeld wordt het gebruik van de ConnectionProviderAttribute klasse gedemonstreerd door te laten zien hoe u het ConnectionProviderAttribute metagegevenselement kunt declareren in een callback-methode in een providerbesturing. Houd er rekening mee dat de eenvoudigste overbelasting van de constructor wordt gebruikt; alleen de displayName parameterwaarde wordt opgegeven.
[ConnectionProvider("Row")]
public IWebPartRow GetConnectionInterface()
{
return new RowProviderWebPart();
}
<ConnectionProvider("Row")> _
Public Function GetConnectionInterface() As IWebPartRow
Return New RowProviderWebPart()
End Function 'GetConnectionInterface
In de volgende codevoorbeelden ziet u hoe u een eenvoudige, statische verbinding maakt tussen twee besturingselementen voor webonderdelen met behulp van de WebPartConnection klasse. De provider- en consumentencodebestanden moeten in de App_Code map worden geplaatst onder de toepassingsmap die de .aspx pagina bevat.
In het eerste voorbeeld ziet u een klasse die fungeert als provider. U ziet dat een methode is aangewezen als de callback-methode met het ConnectionProviderAttribute metagegevenselement.
using System;
using System.Collections;
using System.ComponentModel;
using System.Data;
using System.Reflection;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
//This sample code creates a Web Parts control that acts as a provider of row data.
namespace My
{
public sealed class RowProviderWebPart : WebPart, IWebPartRow
{
private DataTable _table;
public RowProviderWebPart()
{
_table = new DataTable();
DataColumn col = new DataColumn();
col.DataType = typeof(string);
col.ColumnName = "Name";
_table.Columns.Add(col);
col = new DataColumn();
col.DataType = typeof(string);
col.ColumnName = "Address";
_table.Columns.Add(col);
col = new DataColumn();
col.DataType = typeof(int);
col.ColumnName = "ZIP Code";
_table.Columns.Add(col);
DataRow row = _table.NewRow();
row["Name"] = "John Q. Public";
row["Address"] = "123 Main Street";
row["ZIP Code"] = 98000;
_table.Rows.Add(row);
}
[ConnectionProvider("Row")]
public IWebPartRow GetConnectionInterface()
{
return new RowProviderWebPart();
}
public PropertyDescriptorCollection Schema
{
get {
return TypeDescriptor.GetProperties(_table.DefaultView[0]);
}
}
public void GetRowData(RowCallback callback)
{
callback(_table.Rows);
}
}
}
Imports System.Collections
Imports System.ComponentModel
Imports System.Data
Imports System.Reflection
Imports System.Web.UI
Imports System.Web.UI.WebControls
Imports System.Web.UI.WebControls.WebParts
'This sample code creates a Web Parts control that acts as a provider of row data.
Namespace MyCustomWebPart
Public NotInheritable Class RowProviderWebPart
Inherits WebPart
Implements IWebPartRow
Private _table As DataTable
Public Sub New()
_table = New DataTable()
Dim col As New DataColumn()
col.DataType = GetType(String)
col.ColumnName = "Name"
_table.Columns.Add(col)
col = New DataColumn()
col.DataType = GetType(String)
col.ColumnName = "Address"
_table.Columns.Add(col)
col = New DataColumn()
col.DataType = GetType(Integer)
col.ColumnName = "ZIP Code"
_table.Columns.Add(col)
Dim row As DataRow = _table.NewRow()
row("Name") = "John Q. Public"
row("Address") = "123 Main Street"
row("ZIP Code") = 98000
_table.Rows.Add(row)
End Sub
<ConnectionProvider("Row")> _
Public Function GetConnectionInterface() As IWebPartRow
Return New RowProviderWebPart()
End Function 'GetConnectionInterface
Public ReadOnly Property Schema() As PropertyDescriptorCollection _
Implements IWebPartRow.Schema
Get
Return TypeDescriptor.GetProperties(_table.DefaultView(0))
End Get
End Property
Public Sub GetRowData(ByVal callback As RowCallback) _
Implements IWebPartRow.GetRowData
callback(_table.Rows)
End Sub
End Class
In het tweede voorbeeld ziet u een klasse die als consument fungeert.
using System;
using System.Collections;
using System.ComponentModel;
using System.Data;
using System.Reflection;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
// This sample code creates a Web Parts control that acts as a consumer of row data.
namespace My
{
public sealed class RowConsumerWebPart : WebPart {
private IWebPartRow _provider;
private ICollection _tableData;
private void GetRowData(object rowData)
{
_tableData = (ICollection)rowData;
}
protected override void OnPreRender(EventArgs e)
{
if (_provider != null)
{
_provider.GetRowData(new RowCallback(GetRowData));
}
}
protected override void RenderContents(HtmlTextWriter writer) {
if (_provider != null) {
PropertyDescriptorCollection props = _provider.Schema;
int count = 0;
if (props != null && props.Count > 0 && _tableData != null) {
foreach (PropertyDescriptor prop in props)
{
foreach (DataRow o in _tableData)
{
writer.Write(prop.DisplayName + ": " + o[count]);
writer.WriteBreak();
writer.WriteLine();
count = count + 1;
}
}
}
else {
writer.Write("No data");
}
}
else {
writer.Write("Not connected");
}
}
[ConnectionConsumer("Row")]
public void SetConnectionInterface(IWebPartRow provider)
{
_provider = provider;
}
}
}
//}
Imports System.Collections
Imports System.ComponentModel
Imports System.Data
Imports System.Reflection
Imports System.Web.UI
Imports System.Web.UI.WebControls
Imports System.Web.UI.WebControls.WebParts
' This sample code creates a Web Parts control that acts as a consumer of row data.
Namespace MyCustomWebPart
Public NotInheritable Class RowConsumerWebPart
Inherits WebPart
Private _provider As IWebPartRow
Private _tableData As ICollection
Private Sub GetRowData(ByVal rowData As Object)
_tableData = CType(rowData, ICollection)
End Sub
Protected Overrides Sub OnPreRender(ByVal e As EventArgs)
If Not (_provider Is Nothing) Then
' _provider.GetRowData(AddressOf (New RowCallback(GetRowData)))
_provider.GetRowData(AddressOf GetRowData)
' _provider.GetRowData(New RowCallback(AddressOf GetRowData))
End If
End Sub
Protected Overrides Sub RenderContents(ByVal writer As HtmlTextWriter)
If Not (_provider Is Nothing) Then
Dim props As PropertyDescriptorCollection = _provider.Schema
Dim count As Integer = 0
If Not (props Is Nothing) AndAlso props.Count > 0 AndAlso Not (_tableData Is Nothing) Then
Dim prop As PropertyDescriptor
For Each prop In props
Dim o As DataRow
For Each o In _tableData
writer.Write(prop.DisplayName & ": " & o(count))
writer.WriteBreak()
writer.WriteLine()
count = count + 1
Next o
Next prop
Else
writer.Write("No data")
End If
Else
writer.Write("Not connected")
End If
End Sub
<ConnectionConsumer("Row")> _
Public Sub SetConnectionInterface(ByVal provider As IWebPartRow)
_provider = provider
End Sub
End Class
In het laatste voorbeeld ziet u de ASP.NET pagina met de twee besturingselementen.
<%@ page language="C#" %>
<%@ register TagPrefix="my" Namespace="My" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" >
<head runat="server">
<title>IRow Test Page</title>
</head>
<body>
<form id="form1" runat="server">
<div>
<!-- A static or dynamic connection is required to link two Web Parts controls. --->
<asp:webpartmanager ID="WebPartManager1" runat="server">
<staticconnections>
<asp:webpartconnection ID="wp1" ProviderID="provider1" ConsumerID="consumer1" >
</asp:webpartconnection>
</staticconnections>
</asp:webpartmanager>
<asp:webpartzone ID="WebPartZone1" runat="server">
<ZoneTemplate>
<!-- The following two lines specify the two connected controls. --->
<my:RowProviderWebPart ID="provider1" runat="server" ToolTip="Row Provider Control" />
<my:RowConsumerWebPart ID="consumer1" runat="server" ToolTip="Row Consumer Control" />
</ZoneTemplate>
</asp:webpartzone>
</div>
</form>
</body>
</html>
<%@ page language="VB" %>
<%@ Register TagPrefix="my" Namespace="MyCustomWebPart" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" >
<head runat="server">
<title>IRow Test Page</title>
</head>
<body>
<form id="form1" runat="server">
<div>
<!-- A static or dynamic connection is required to link two Web Parts controls. --->
<asp:webpartmanager ID="WebPartManager1" runat="server">
<staticconnections>
<asp:webpartconnection ID="wp1" ProviderID="provider1" ConsumerID="consumer1" >
</asp:webpartconnection>
</staticconnections>
</asp:webpartmanager>
<asp:webpartzone ID="WebPartZone1" runat="server">
<ZoneTemplate>
<my:RowProviderWebPart ID="provider1" runat="server" ToolTip="Row Provider Control" />
<my:RowConsumerWebPart ID="consumer1" runat="server" ToolTip="Row Consumer Control" />
</ZoneTemplate>
</asp:webpartzone>
</div>
</form>
</body>
</html>
Opmerkingen
Een webonderdelenverbinding bestaat uit twee serverbesturingselementen die zich in een WebPartZoneBase zone bevinden en gegevens delen door middel van een interface-exemplaar dat van het ene besturingselement naar het andere wordt doorgegeven. Het besturingselement dat het interface-exemplaar dient, wordt de provider genoemd en het besturingselement dat het interface-exemplaar en de processen ontvangt of de gegevens weergeeft, wordt de consument genoemd. Zie het WebPartConnection overzicht van de klasse- en webonderdelenverbindingen voor meer informatie over verbindingen.
Het besturingselement van de provider in een verbinding kan een WebPart besturingselement of een willekeurig type server- of gebruikersbeheer zijn, maar moet een methode hebben die is aangewezen als een callback-methode. De callback-methode wordt aangeroepen tijdens het verbindingsproces en het doel ervan is om terug te keren naar de consument een interface-exemplaar dat gegevens bevat. Als u de methode wilt aanwijzen die fungeert als de callback-methode in een provider, moet u een ConnectionProviderAttribute metagegevenselement toevoegen aan de methode (het element is gebaseerd op de ConnectionProviderAttribute klasse).
Naast het aanwijzen van de callback-methode in een provider, kunt u met het ConnectionProviderAttribute object ook bepaalde gegevens over het verbindingspunt van een provider opgeven. Een providerverbindingspunt is een exemplaar van de ProviderConnectionPoint klasse die alle details bevat van een provider die nodig is om een verbinding tot stand te brengen, inclusief het besturingstype van de provider, of deze tegelijkertijd verbinding kan maken met meerdere consumenten, welk type interface de provider dient voor consumenten, details over de callback-methode en een weergavenaam die het providerverbindingspunt in de gebruikersinterface (UI) vertegenwoordigt. Elke verbinding met webonderdelen bevat een providerverbindingspunt dat is gekoppeld aan het providerbeheer.
Wanneer u het ConnectionProviderAttribute metagegevenselement toevoegt aan de callback-methode in een provider, kunt u het ook gebruiken om de volgende details op te geven over het verbindingspunt van de provider: een weergavenaam voor het verbindingspunt (zie de DisplayName eigenschap voor meer informatie), of de provider tegelijkertijd verbinding kan maken met meerdere consumenten (zie de AllowsMultipleConnections eigenschap voor meer informatie). een id voor het verbindingspunt (voor meer informatie, zie de ID eigenschap) en het type verbindingspunt dat de provider gebruikt (zie de ConnectionPointType eigenschap voor meer informatie). De vier overbelastingen van de constructor voor de ConnectionProviderAttribute klasse hebben elk parameters waarmee u waarden kunt opgeven voor een of meer van deze verbindingspunteigenschappen wanneer een nieuw exemplaar van de klasse wordt gemaakt. De meeste eigenschappen voor een providerverbindingspunt kunnen ook programmatisch worden ingesteld; het instellen van deze elementen met behulp van het ConnectionProviderAttribute element is optioneel.
Note
Wanneer u het ConnectionProviderAttribute metagegevenselement toevoegt aan een callback-methode in een provider, is de enige vereiste parameter die u altijd moet opgeven de displayName parameter (zie de overbelasting van de ConnectionProviderAttribute(String) constructor voor meer informatie). De waarde van deze parameter wordt toegewezen aan de DisplayName eigenschap en wanneer een gebruiker de verbindingsinterface opent (gemaakt door het ConnectionsZone besturingselement), vertegenwoordigt de weergavenaam het verbindingspunt van de provider in de gebruikersinterface. Als u meerdere callback-methoden aanwijst in een providerbeheer, hebt u meerdere mogelijke verbindingspunten waaruit u kunt kiezen. Wanneer u het ConnectionProviderAttribute metagegevenselement toevoegt aan elke callback-methode, moet u ook een waarde opgeven voor de id parameter, zodat elk providerverbindingspunt een bekende, unieke id heeft.
Constructors
| Name | Description |
|---|---|
| ConnectionProviderAttribute(String, String, Type) |
Initialiseert een nieuw exemplaar van de ConnectionProviderAttribute klasse, waarbij een weergavenaam, een id en een specifiek type verbindingspuntobject worden opgegeven dat moet worden gebruikt voor het verbindingspunt van de provider. |
| ConnectionProviderAttribute(String, String) |
Initialiseert een nieuw exemplaar van de ConnectionProviderAttribute klasse, waarbij een weergavenaam en een id voor het verbindingspunt van de provider worden opgegeven. |
| ConnectionProviderAttribute(String, Type) |
Initialiseert een nieuw exemplaar van de ConnectionProviderAttribute klasse, waarbij een weergavenaam en een specifiek type verbindingspuntobject worden opgegeven dat moet worden gebruikt voor het verbindingspunt van de provider. |
| ConnectionProviderAttribute(String) |
Initialiseert een nieuw exemplaar van de ConnectionProviderAttribute klasse, waarbij een weergavenaam wordt opgegeven voor het verbindingspunt van de provider. |
Eigenschappen
| Name | Description |
|---|---|
| AllowsMultipleConnections |
Hiermee wordt een waarde opgehaald of ingesteld die aangeeft of het verbindingspunt meerdere verbindingen toestaat. |
| ConnectionPointType |
Hiermee haalt u het type verbindingspunt op dat is gekoppeld aan een providerbeheer. |
| DisplayName |
Hiermee haalt u de beschrijvende naam van het verbindingspunt van de provider op. |
| DisplayNameValue |
Hiermee haalt u de tekenreeks op die wordt gebruikt als de waarde van de DisplayName eigenschap, voor gebruik in lokalisatiescenario's. |
| ID |
Hiermee haalt u een tekenreeks op die de unieke identiteit van het verbindingspuntobject van de provider vertegenwoordigt. |
| TypeId |
Wanneer deze wordt geïmplementeerd in een afgeleide klasse, krijgt u Attributehiervoor een unieke id. (Overgenomen van Attribute) |
Methoden
| Name | Description |
|---|---|
| Equals(Object) |
Retourneert een waarde die aangeeft of dit exemplaar gelijk is aan een opgegeven object. (Overgenomen van Attribute) |
| GetHashCode() |
Retourneert de hash-code voor dit exemplaar. (Overgenomen van Attribute) |
| GetType() |
Hiermee haalt u de Type huidige instantie op. (Overgenomen van Object) |
| IsDefaultAttribute() |
Wanneer deze wordt overschreven in een afgeleide klasse, geeft u aan of de waarde van dit exemplaar de standaardwaarde is voor de afgeleide klasse. (Overgenomen van Attribute) |
| Match(Object) |
Wanneer deze wordt overschreven in een afgeleide klasse, wordt een waarde geretourneerd die aangeeft of dit exemplaar gelijk is aan een opgegeven object. (Overgenomen van Attribute) |
| MemberwiseClone() |
Hiermee maakt u een ondiepe kopie van de huidige Object. (Overgenomen van Object) |
| ToString() |
Retourneert een tekenreeks die het huidige object vertegenwoordigt. (Overgenomen van Object) |
Expliciete interface-implementaties
| Name | Description |
|---|---|
| _Attribute.GetIDsOfNames(Guid, IntPtr, UInt32, UInt32, IntPtr) |
Hiermee wordt een set namen toegewezen aan een bijbehorende set verzend-id's. (Overgenomen van Attribute) |
| _Attribute.GetTypeInfo(UInt32, UInt32, IntPtr) |
Hiermee haalt u de typegegevens voor een object op, die kan worden gebruikt om de typegegevens voor een interface op te halen. (Overgenomen van Attribute) |
| _Attribute.GetTypeInfoCount(UInt32) |
Hiermee wordt het aantal type-informatieinterfaces opgehaald dat een object biedt (0 of 1). (Overgenomen van Attribute) |
| _Attribute.Invoke(UInt32, Guid, UInt32, Int16, IntPtr, IntPtr, IntPtr, IntPtr) |
Biedt toegang tot eigenschappen en methoden die door een object worden weergegeven. (Overgenomen van Attribute) |