ConnectionProviderAttribute Třída
Definice
Důležité
Některé informace platí pro předběžně vydaný produkt, který se může zásadně změnit, než ho výrobce nebo autor vydá. Microsoft neposkytuje žádné záruky, výslovné ani předpokládané, týkající se zde uváděných informací.
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
- Atributy
Příklady
Následující příklad kódu ukazuje použití ConnectionProviderAttribute třídy tím, že ukazuje, jak deklarovat ConnectionProviderAttribute element metadata metody zpětného volání v ovládacím prvku zprostředkovatele. Všimněte si, že nejjednodušší přetížení konstruktoru je použito; 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é propojení mezi dvěma ovládacími částmi 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 .aspx stránku.
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 ConnectionProviderAttribute elementem 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 spotřebitel.
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 ASP.NET stránku, 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 ovládacích prvků serveru umístěných v WebPartZoneBase zóně a sdílení dat prostřednictvím instance rozhraní předané 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 přehledu WebPartConnection třídy a připojení webových částí.
Ovládací prvek poskytovatele v připojení může být WebPart ovládací prvek nebo jakýkoli typ serveru 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í se vyvolá během procesu připojení a jejím účelem je vrátit se příjemci instance 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 prvek 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 zprostředkovateli potřebném k navázání připojení, včetně typu ovládacího prvku poskytovatele, zda se může připojit k více příjemcům současně, jaký typ rozhraní zprostředkovatel slouží uživatelům, podrobnosti o metodě zpětného volání a zobrazovaný název, který představuje spojovací bod poskytovatele v uživatelském rozhraní. Každé připojení webových částí zahrnuje spojovací bod zprostředkovatele, který je přidružený k ovládacímu prvku zprostředkovatele.
Když do metody zpětného volání v poskytovateli přidáte ConnectionProviderAttribute prvek metadat, můžete ho také použít k určení následujících podrobností o spojovacím bodu poskytovatele: zobrazovaný název spojovacího bodu (podrobnosti, viz DisplayName vlastnost), zda se zprostředkovatel může připojit k více příjemcům současně (podrobnosti, viz AllowsMultipleConnections vlastnost), ID spojovacího bodu (podrobnosti, viz ID vlastnost) a typ spojovacího bodu, který poskytovatel používá (podrobnosti viz ConnectionPointType vlastnost). Čtyři přetížení konstruktoru pro ConnectionProviderAttribute třídu mají parametry, které umožňují zadat hodnoty pro jednu nebo více těchto 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 metadat do metody zpětného volání ve zprostředkovateli, jediný povinný parametr, který musíte vždy zadat, je displayName parametr (podrobnosti viz přetížení konstruktoru ConnectionProviderAttribute(String) ). Hodnota tohoto parametru DisplayName je přiřazena k vlastnosti 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 v ovládacím prvku zprostředkovatele určíte více metod zpětného volání, budete mít několik možných spojovacích bodů, ze kterých si můžete vybrat, a když do každé metody zpětného volání přidáte ConnectionProviderAttribute prvek metadat, měli byste také zadat hodnotu parametru id , aby každý spojovací bod zprostředkovatele měl známý, jedinečný identifikátor.
Konstruktory
| Name | Description |
|---|---|
| ConnectionProviderAttribute(String, String, Type) |
Inicializuje novou instanci ConnectionProviderAttribute třídy, určuje zobrazovaný název, ID a konkrétní typ objektu spojovacího bodu, který se má použít pro spojovací bod zprostředkovatele. |
| ConnectionProviderAttribute(String, String) |
Inicializuje novou instanci ConnectionProviderAttribute třídy, určuje zobrazovaný název a ID pro spojovací bod zprostředkovatele. |
| ConnectionProviderAttribute(String, Type) |
Inicializuje novou instanci ConnectionProviderAttribute třídy, určuje zobrazovaný název a konkrétní typ objektu spojovacího bodu, který se má použít pro spojovací bod zprostředkovatele. |
| ConnectionProviderAttribute(String) |
Inicializuje novou instanci ConnectionProviderAttribute třídy a určuje zobrazovaný název pro spojovací bod zprostředkovatele. |
Vlastnosti
| Name | Description |
|---|---|
| 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 hodnota DisplayName vlastnosti pro použití v lokalizačních scénářích. |
| ID |
Získá řetězec, který představuje jedinečnou identitu objektu spojovacího bodu zprostředkovatele. |
| TypeId |
Při implementaci v odvozené třídě získá jedinečný identifikátor pro tento Attribute. (Zděděno od Attribute) |
Metody
| Name | Description |
|---|---|
| Equals(Object) |
Vrátí hodnotu, která určuje, zda je tato instance rovna zadanému objektu. (Zděděno od Attribute) |
| GetHashCode() |
Vrátí kód hash pro tuto instanci. (Zděděno od Attribute) |
| GetType() |
Získá Type aktuální instance. (Zděděno od Object) |
| IsDefaultAttribute() |
Při přepsání v odvozené třídě určuje, zda hodnota této instance je 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á určuje, zda se tato instance rovná zadanému objektu. (Zděděno od Attribute) |
| MemberwiseClone() |
Vytvoří mělkou kopii aktuálního Object. (Zděděno od Object) |
| ToString() |
Vrátí řetězec, který představuje aktuální objekt. (Zděděno od Object) |
Explicitní implementace rozhraní
| Name | Description |
|---|---|
| _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) |