ConnectionProviderAttribute Třída

Definice

Identifikuje metodu zpětného volání v ovládacím prvku serveru, který funguje jako zprostředkovatel připojení webových částí, a umožňuje vývojářům zadat podrobnosti o spojovacím bodu poskytovatele.

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
Dědičnost
ConnectionProviderAttribute
Atributy

Příklady

Následující příklad kódu ukazuje použití ConnectionProviderAttribute třídy tím, že ukazuje, jak deklarovat ConnectionProviderAttribute metadata element v metodě zpětného volání v ovládacím prvku zprostředkovatele. Všimněte si, že se používá nejjednodušší přetížení konstruktoru; je zadána pouze hodnota parametru displayName .

[ConnectionProvider("Row")]
public IWebPartRow GetConnectionInterface()
{
    return new RowProviderWebPart();
}
<ConnectionProvider("Row")> _
Public Function GetConnectionInterface() As IWebPartRow
    Return New RowProviderWebPart()

End Function 'GetConnectionInterface

Následující příklady kódu ukazují, jak vytvořit základní statické připojení mezi dvěma ovládacími prvky webových částí pomocí WebPartConnection třídy. Soubory zprostředkovatele a kódu příjemce by měly být vloženy do složky App_Code ve složce aplikace, která obsahuje stránku .aspx.

První příklad ukazuje třídu, která funguje jako zprostředkovatel. Všimněte si, že metoda je určena jako metoda zpětného volání s elementem ConnectionProviderAttribute metadat.

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

Druhý příklad ukazuje třídu, která funguje jako příjemce.

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

Poslední příklad ukazuje stránku ASP.NET, která obsahuje dva ovládací prvky.

<%@ 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>

Poznámky

Připojení webových částí se skládá ze dvou serverových ovládacích prvků umístěných v WebPartZoneBase zóně a sdílení dat prostřednictvím instance rozhraní předávané z jednoho ovládacího prvku do druhého. Ovládací prvek, který obsluhuje instanci rozhraní, se nazývá zprostředkovatel a ovládací prvek, který přijímá instanci rozhraní a zpracovává nebo zobrazuje data, se nazývá příjemce. Podrobnosti o připojeních najdete v WebPartConnection tématu Přehled připojení webových částí a třídy.

Ovládací prvek zprostředkovatele v připojení může být ovládací prvek WebPart nebo jakýkoli typ serverového nebo uživatelského ovládacího prvku, ale musí mít metodu určenou jako metodu zpětného volání. Metoda zpětného volání je vyvolána během procesu připojení a jejím účelem je vrátit příjemci instanci rozhraní, která obsahuje data. Chcete-li určit metodu, která slouží jako metoda zpětného volání ve zprostředkovateli, musíte do metody přidat ConnectionProviderAttribute element metadat (element je založen na ConnectionProviderAttribute třídě).

Kromě určení metody zpětného volání ve zprostředkovateli ConnectionProviderAttribute objekt také umožňuje zadat určité podrobnosti o spojovacím bodu poskytovatele. Spojovací bod zprostředkovatele je instance ProviderConnectionPoint třídy, která zapouzdřuje všechny podrobnosti o poskytovateli potřebném k navázání připojení, včetně typu ovládacího prvku zprostředkovatele, toho, jestli se může připojit k více příjemcům najednou, jaký typ rozhraní zprostředkovatel slouží příjemcům, podrobnosti o metodě zpětného volání a zobrazovaný název, který představuje spojovací bod zprostředkovatele v uživatelském rozhraní . Každé připojení webových částí obsahuje spojovací bod zprostředkovatele, který je přidružený k ovládacímu prvku zprostředkovatele.

Když přidáte ConnectionProviderAttribute element metadata do metody zpětného volání ve zprostředkovateli, můžete ho použít také k zadání následujících podrobností o spojovacím bodu zprostředkovatele: zobrazovaný název spojovacího bodu (podrobnosti najdete ve DisplayName vlastnosti), zda se zprostředkovatel může připojit k více příjemcům najednou (podrobnosti najdete ve AllowsMultipleConnections vlastnosti). ID spojovacího bodu (podrobnosti najdete ve ID vlastnosti) a typ spojovacího bodu, který zprostředkovatel používá (podrobnosti najdete ve ConnectionPointType vlastnosti). Čtyři přetížení konstruktoru pro ConnectionProviderAttribute každou třídu mají parametry, které umožňují zadat hodnoty pro jednu nebo více vlastností spojovacího bodu při vytvoření nové instance třídy. Většinu vlastností spojovacího bodu zprostředkovatele lze také nastavit programově; nastavení pomocí elementu ConnectionProviderAttribute je volitelné.

Poznámka

Když přidáte ConnectionProviderAttribute element metadata do metody zpětného volání ve zprostředkovateli, jediným požadovaným parametrem, který musíte vždy zadat, je displayName parametr (podrobnosti najdete v přetížení konstruktoru ConnectionProviderAttribute(String) ). Hodnota tohoto parametru je přiřazena vlastnosti DisplayName a když uživatel otevře uživatelské rozhraní připojení (vytvořené ovládacím ConnectionsZone prvku), zobrazovaný název představuje spojovací bod zprostředkovatele v uživatelském rozhraní. Pokud určíte více metod zpětného volání v ovládacím prvku zprostředkovatele, budete mít na výběr z více možných spojovacích bodů a když přidáte ConnectionProviderAttribute prvek metadat do každé metody zpětného volání, měli byste také zadat hodnotu parametru id , aby každý spojovací bod zprostředkovatele měl známý jedinečný identifikátor.

Konstruktory

ConnectionProviderAttribute(String)

Inicializuje novou instanci ConnectionProviderAttribute třídy a určí zobrazovaný název spojovacího bodu zprostředkovatele.

ConnectionProviderAttribute(String, String)

Inicializuje novou instanci ConnectionProviderAttribute třídy zadáním zobrazovaného názvu a ID spojovacího bodu zprostředkovatele.

ConnectionProviderAttribute(String, String, Type)

Inicializuje novou instanci ConnectionProviderAttribute třídy zadáním zobrazovaného názvu, ID a konkrétního typu objektu spojovacího bodu, který se má použít pro spojovací bod zprostředkovatele.

ConnectionProviderAttribute(String, Type)

Inicializuje novou instanci ConnectionProviderAttribute třídy zadáním zobrazovaného názvu a konkrétního typu objektu spojovacího bodu, který se má použít pro spojovací bod zprostředkovatele.

Vlastnosti

AllowsMultipleConnections

Získá nebo nastaví hodnotu, která označuje, zda spojovací bod umožňuje více připojení.

ConnectionPointType

Získá typ spojovacího bodu přidruženého k ovládacímu prvku zprostředkovatele.

DisplayName

Získá popisný název spojovacího bodu poskytovatele.

DisplayNameValue

Získá nebo nastaví řetězec použitý jako hodnotu DisplayName vlastnosti pro použití v lokalizačních scénářích.

ID

Získá řetězec, který představuje jedinečnou identitu zprostředkovatele spojovací bod objektu.

TypeId

Při implementaci v odvozené třídě získá jedinečný identifikátor pro tuto Attributetřídu .

(Zděděno od Attribute)

Metody

Equals(Object)

Vrací hodnotu, která určuje, zda je tato instance rovna zadanému objektu.

(Zděděno od Attribute)
GetHashCode()

Vrátí hodnotu hash pro tuto instanci.

(Zděděno od Attribute)
GetType()

Získá aktuální Type instanci.

(Zděděno od Object)
IsDefaultAttribute()

Při přepsání v odvozené třídě označuje, zda je hodnota této instance výchozí hodnotou pro odvozenou třídu.

(Zděděno od Attribute)
Match(Object)

Při přepsání v odvozené třídě vrátí hodnotu, která označuje, zda se tato instance rovná zadanému objektu.

(Zděděno od Attribute)
MemberwiseClone()

Vytvoří mělkou kopii aktuálního Objectsouboru .

(Zděděno od Object)
ToString()

Vrátí řetězec, který představuje aktuální objekt.

(Zděděno od Object)

Explicitní implementace rozhraní

_Attribute.GetIDsOfNames(Guid, IntPtr, UInt32, UInt32, IntPtr)

Mapuje sadu názvů na odpovídající sadu identifikátorů pro rozesílání.

(Zděděno od Attribute)
_Attribute.GetTypeInfo(UInt32, UInt32, IntPtr)

Načte informace o typu objektu, které lze použít k získání informací o typu pro rozhraní.

(Zděděno od Attribute)
_Attribute.GetTypeInfoCount(UInt32)

Získá počet rozhraní typu informací, které objekt poskytuje (0 nebo 1).

(Zděděno od Attribute)
_Attribute.Invoke(UInt32, Guid, UInt32, Int16, IntPtr, IntPtr, IntPtr, IntPtr)

Poskytuje přístup k vlastnostem a metodám vystaveným objektem.

(Zděděno od Attribute)

Platí pro

Viz také