ConnectionConsumerAttribute 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 consument in een verbinding met webonderdelen en stelt ontwikkelaars in staat om details over het verbindingspunt van de consument op te geven.
public ref class ConnectionConsumerAttribute : Attribute
[System.AttributeUsage(System.AttributeTargets.Method)]
public class ConnectionConsumerAttribute : Attribute
[<System.AttributeUsage(System.AttributeTargets.Method)>]
type ConnectionConsumerAttribute = class
inherit Attribute
Public Class ConnectionConsumerAttribute
Inherits Attribute
- Overname
- Kenmerken
Voorbeelden
In het volgende codevoorbeeld wordt het gebruik van de ConnectionConsumerAttribute klasse gedemonstreerd door te laten zien hoe u het ConnectionConsumerAttribute metagegevenselement kunt declareren voor een callback-methode in een consumentenbeheer. Houd er rekening mee dat de eenvoudigste overbelasting van de constructor wordt gebruikt; alleen de displayName parameterwaarde wordt opgegeven.
[ConnectionConsumer("Row")]
public void SetConnectionInterface(IWebPartRow provider)
{
_provider = provider;
}
<ConnectionConsumer("Row")> _
Public Sub SetConnectionInterface(ByVal provider As IWebPartRow)
_provider = provider
End Sub
End Class
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.
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. U ziet dat een methode is aangewezen als de callback-methode met het ConnectionConsumerAttribute 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 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 consumentenbeheer 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 van de provider een interface-exemplaar te ontvangen dat gegevens bevat. Als u de methode wilt aanwijzen die als callback-methode in een consument fungeert, moet u een ConnectionConsumerAttribute metagegevenselement toevoegen aan de methode (het element is gebaseerd op de ConnectionConsumerAttribute klasse).
Naast het aanwijzen van de callback-methode in een consument, kunt u met het ConnectionConsumerAttribute object ook bepaalde details over het verbindingspunt van een consument opgeven. Een consumentenaansluitpunt is een exemplaar van de ConsumerConnectionPoint klasse waarin alle details van een consument worden ingekapseld die nodig zijn om een verbinding tot stand te brengen, inclusief het besturingstype van de consument, of het tegelijkertijd verbinding kan maken met meerdere providers, welk type interface de consument kan ontvangen van een provider, details over de callback-methode en een weergavenaam die het consumentenverbindingspunt in de gebruikersinterface (UI) vertegenwoordigt. Elke verbinding met webonderdelen bevat een consumentenaansluitpunt dat is gekoppeld aan het consumentenbeheer.
Wanneer u het ConnectionConsumerAttribute metagegevenselement toevoegt aan de callback-methode in een consument, kunt u het ook gebruiken om de volgende details op te geven over het verbindingspunt van de consument: een weergavenaam voor het verbindingspunt (zie de DisplayName eigenschap voor meer informatie), of de consument tegelijkertijd verbinding kan maken met meerdere providers (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 consument gebruikt (zie de ConnectionPointType eigenschap voor meer informatie). De vier overbelastingen van de constructor voor de ConnectionConsumerAttribute 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 consumentenaansluitpunt kunnen ook programmatisch worden ingesteld; het instellen van deze elementen met behulp van het ConnectionConsumerAttribute element is optioneel.
Note
Wanneer u het ConnectionConsumerAttribute metagegevenselement toevoegt aan een callback-methode in een consument, is de enige vereiste parameter die u altijd moet opgeven de displayName parameter (zie de overbelasting van de ConnectionConsumerAttribute(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 consument in de gebruikersinterface. Als u meerdere callback-methoden aanwijst in een consumentenbeheer, hebt u meerdere mogelijke verbindingspunten waaruit u kunt kiezen. Wanneer u het ConnectionConsumerAttribute metagegevenselement toevoegt aan elke callback-methode, moet u ook een waarde voor de id parameter opgeven, zodat elk consumentenaansluitpunt een bekende, unieke id heeft.
Constructors
| Name | Description |
|---|---|
| ConnectionConsumerAttribute(String, String, Type) |
Initialiseert een nieuw exemplaar van de ConnectionConsumerAttribute klasse, waarbij een weergavenaam, een id en een specifiek type verbindingspuntobject worden opgegeven dat moet worden gebruikt voor het verbindingspunt van de consument. |
| ConnectionConsumerAttribute(String, String) |
Initialiseert een nieuw exemplaar van de ConnectionConsumerAttribute klasse, waarbij een weergavenaam en een id voor het consumentenaansluitpunt worden opgegeven. |
| ConnectionConsumerAttribute(String, Type) |
Initialiseert een nieuw exemplaar van de ConnectionConsumerAttribute klasse, waarbij een weergavenaam en een specifiek type verbindingspuntobject worden opgegeven dat moet worden gebruikt voor het consumentenaansluitpunt. |
| ConnectionConsumerAttribute(String) |
Initialiseert een nieuw exemplaar van de ConnectionConsumerAttribute klasse, waarbij een weergavenaam wordt opgegeven voor het verbindingspunt van de consument. |
Eigenschappen
| Name | Description |
|---|---|
| AllowsMultipleConnections |
Hiermee wordt een waarde opgehaald of ingesteld die aangeeft of het verbindingspunt meerdere verbindingen toestaat. |
| ConnectionPointType |
Hiermee wordt het verbindingspunttype van het verbindingspunt van de consument ophaalt. |
| DisplayName |
Hiermee haalt u de beschrijvende naam van het verbindingspunt van de consument 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 consumentenaansluitpunt 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) |