ConnectionConsumerAttribute Classe
Definizione
Importante
Alcune informazioni sono relative alla release non definitiva del prodotto, che potrebbe subire modifiche significative prima della release definitiva. Microsoft non riconosce alcuna garanzia, espressa o implicita, in merito alle informazioni qui fornite.
Identifica il metodo di callback in un controllo server che funge da consumer in una connessione web part e consente agli sviluppatori di specificare i dettagli sul punto di connessione del consumer.
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
- Ereditarietà
- Attributi
Esempio
Nell'esempio di codice seguente viene illustrato l'uso della ConnectionConsumerAttribute classe , illustrando come dichiarare l'elemento ConnectionConsumerAttribute
di metadati in un metodo di callback in un controllo consumer. Si noti che viene usato l'overload più semplice del costruttore; viene fornito solo il valore del displayName
parametro.
[ConnectionConsumer("Row")]
public void SetConnectionInterface(IWebPartRow provider)
{
_provider = provider;
}
<ConnectionConsumer("Row")> _
Public Sub SetConnectionInterface(ByVal provider As IWebPartRow)
_provider = provider
End Sub
End Class
Gli esempi di codice seguenti illustrano come creare una connessione statica di base tra due controlli Web part usando la WebPartConnection classe . Il provider e i file di codice consumer devono essere inseriti nella cartella App_Code nella cartella dell'applicazione che contiene la pagina .aspx.
Il primo esempio mostra una classe che funge da 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
Il secondo esempio mostra una classe che funge da consumer. Si noti che un metodo viene designato come metodo di callback con l'elemento ConnectionConsumerAttribute
di metadati.
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
L'esempio finale mostra la pagina ASP.NET che contiene i due controlli.
<%@ 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>
Commenti
Una connessione Web part è costituita da due controlli server che risiedono in una WebPartZoneBase zona e condividono i dati tramite un'istanza di interfaccia passata da un controllo all'altro. Il controllo che serve l'istanza dell'interfaccia viene chiamato provider e il controllo che riceve l'istanza dell'interfaccia e elabora o visualizza i dati viene chiamato consumer. Per informazioni dettagliate sulle connessioni, vedere Panoramica delle WebPartConnection connessioni a classi e Web part.
Il controllo consumer in una connessione può essere un WebPart controllo o qualsiasi tipo di controllo server o utente, ma deve avere un metodo designato come metodo di callback. Il metodo di callback viene richiamato durante il processo di connessione e lo scopo è quello di ricevere dal provider un'istanza dell'interfaccia che contiene dati. Per designare il metodo che funge da metodo di callback in un consumer, è necessario aggiungere un ConnectionConsumerAttribute
elemento di metadati al metodo (l'elemento è basato sulla ConnectionConsumerAttribute classe ).
Oltre a designare il metodo di callback in un consumer, l'oggetto ConnectionConsumerAttribute consente anche di specificare determinati dettagli sul punto di connessione di un consumer. Un punto di connessione consumer è un'istanza della ConsumerConnectionPoint classe che incapsula tutti i dettagli su un consumer necessario per stabilire una connessione, incluso il tipo di controllo del consumer, se può connettersi a più provider contemporaneamente, il tipo di interfaccia che il consumer può ricevere da un provider, i dettagli sul metodo di callback e un nome visualizzato che rappresenta il punto di connessione consumer nell'interfaccia utente. Ogni connessione web part include un punto di connessione consumer associato al controllo consumer.
Quando si aggiunge l'elemento ConnectionConsumerAttribute
di metadati al metodo di callback in un consumer, è anche possibile usarlo per specificare i dettagli seguenti sul punto di connessione consumer: un nome visualizzato per il punto di connessione (per informazioni dettagliate, vedere la DisplayName proprietà), se il consumer può connettersi a più provider contemporaneamente (per informazioni dettagliate, vedere la AllowsMultipleConnections proprietà), ID per il punto di connessione (per informazioni dettagliate, vedere la ID proprietà) e il tipo di punto di connessione utilizzato dal consumer (per informazioni dettagliate, vedere la ConnectionPointType proprietà ). I quattro overload del costruttore per la ConnectionConsumerAttribute classe hanno parametri che consentono di specificare i valori per una o più di queste proprietà del punto di connessione quando viene creata una nuova istanza della classe . La maggior parte delle proprietà per un punto di connessione consumer può essere impostata anche a livello di codice; impostarli usando l'elemento ConnectionConsumerAttribute
è facoltativo.
Nota
Quando si aggiunge l'elemento ConnectionConsumerAttribute
di metadati a un metodo di callback in un consumer, l'unico parametro obbligatorio che è necessario specificare è sempre il displayName
parametro . Per informazioni dettagliate, vedere l'overload del ConnectionConsumerAttribute(String) costruttore. Il valore di questo parametro viene assegnato alla DisplayName proprietà e quando un utente apre l'interfaccia utente di connessione (creata dal ConnectionsZone controllo), il nome visualizzato rappresenta il punto di connessione del consumer nell'interfaccia utente. Se si designano più metodi di callback in un controllo consumer, saranno disponibili più punti di connessione tra cui scegliere e quando si aggiunge l'elemento ConnectionConsumerAttribute
di metadati a ogni metodo di callback, è necessario specificare anche un valore per il id
parametro, in modo che ogni punto di connessione consumer abbia un identificatore univoco noto.
Costruttori
ConnectionConsumerAttribute(String) |
Inizializza una nuova istanza della classe ConnectionConsumerAttribute, specificando un nome visualizzato per il punto di connessione consumer. |
ConnectionConsumerAttribute(String, String) |
Inizializza una nuova istanza della classe ConnectionConsumerAttribute, specificando un nome visualizzato e un ID per il punto di connessione consumer. |
ConnectionConsumerAttribute(String, String, Type) |
Inizializza un'istanza nuova della classe ConnectionConsumerAttribute, specificando un nome visualizzato, un ID e un tipo specifico di oggetto punto di connessione da usare come punto di connessione consumer. |
ConnectionConsumerAttribute(String, Type) |
Inizializza una nuova istanza della classe ConnectionConsumerAttribute, specificando un nome visualizzato e un tipo specifico di oggetto punto di connessione da utilizzare per il punto di connessione consumer. |
Proprietà
AllowsMultipleConnections |
Ottiene o imposta un valore che indica se il punto di connessione consente connessioni multiple. |
ConnectionPointType |
Ottiene il tipo del punto di connessione consumer. |
DisplayName |
Ottiene il nome descrittivo del punto di connessione consumer. |
DisplayNameValue |
Ottiene o imposta la stringa utilizzata come valore della proprietà DisplayName, da utilizzare in scenari di localizzazione. |
ID |
Ottiene una stringa che rappresenta l'identità univoca del punto di connessione consumer. |
TypeId |
Quando è implementata in una classe derivata, ottiene un identificatore univoco della classe Attribute. (Ereditato da Attribute) |
Metodi
Equals(Object) |
Restituisce un valore che indica se questa istanza è uguale a un oggetto specificato. (Ereditato da Attribute) |
GetHashCode() |
Restituisce il codice hash per l'istanza. (Ereditato da Attribute) |
GetType() |
Ottiene l'oggetto Type dell'istanza corrente. (Ereditato da Object) |
IsDefaultAttribute() |
In caso di override in una classe derivata, indica se il valore di questa istanza è il valore predefinito per la classe derivata. (Ereditato da Attribute) |
Match(Object) |
Quando è sottoposto a override in una classe derivata, restituisce un valore che indica se questa istanza equivale a un oggetto specificato. (Ereditato da Attribute) |
MemberwiseClone() |
Crea una copia superficiale dell'oggetto Object corrente. (Ereditato da Object) |
ToString() |
Restituisce una stringa che rappresenta l'oggetto corrente. (Ereditato da Object) |
Implementazioni dell'interfaccia esplicita
_Attribute.GetIDsOfNames(Guid, IntPtr, UInt32, UInt32, IntPtr) |
Esegue il mapping di un set di nomi a un set corrispondente di ID dispatch. (Ereditato da Attribute) |
_Attribute.GetTypeInfo(UInt32, UInt32, IntPtr) |
Recupera le informazioni sul tipo relative a un oggetto, che possono essere usate per ottenere informazioni sul tipo relative a un'interfaccia. (Ereditato da Attribute) |
_Attribute.GetTypeInfoCount(UInt32) |
Recupera il numero delle interfacce di informazioni sul tipo fornite da un oggetto (0 o 1). (Ereditato da Attribute) |
_Attribute.Invoke(UInt32, Guid, UInt32, Int16, IntPtr, IntPtr, IntPtr, IntPtr) |
Fornisce l'accesso a proprietà e metodi esposti da un oggetto. (Ereditato da Attribute) |