ConsumerConnectionPoint Konstruktor
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í.
Inicializuje novou instanci ConsumerConnectionPoint třídy .
public:
ConsumerConnectionPoint(System::Reflection::MethodInfo ^ callbackMethod, Type ^ interfaceType, Type ^ controlType, System::String ^ displayName, System::String ^ id, bool allowsMultipleConnections);
public ConsumerConnectionPoint (System.Reflection.MethodInfo callbackMethod, Type interfaceType, Type controlType, string displayName, string id, bool allowsMultipleConnections);
new System.Web.UI.WebControls.WebParts.ConsumerConnectionPoint : System.Reflection.MethodInfo * Type * Type * string * string * bool -> System.Web.UI.WebControls.WebParts.ConsumerConnectionPoint
Public Sub New (callbackMethod As MethodInfo, interfaceType As Type, controlType As Type, displayName As String, id As String, allowsMultipleConnections As Boolean)
Parametry
- callbackMethod
- MethodInfo
Metoda v ovládacím prvku příjemce, která vrací instanci rozhraní příjemcům k navázání připojení.
- displayName
- String
Popisný zobrazovaný název bodu připojení příjemce, který se zobrazí uživatelům v uživatelském rozhraní (UI) připojení.
- id
- String
Jedinečný identifikátor bodu připojení příjemce.
- allowsMultipleConnections
- Boolean
Logická hodnota označující, jestli bod připojení příjemce může mít více souběžných připojení se zprostředkovateli.
Výjimky
callbackMethod
je null
.
-nebo-
interfaceType
je null
.
-nebo-
controlType
je null
.
-nebo-
displayName
je null
nebo prázdný řetězec ("").
controlType
není stejný typ jako ovládací prvek příjemce (nebo z něj odvozená platná třída).
Příklady
Následující příklad kódu ukazuje, jak odvodit z ConsumerConnectionPoint třídy k vytvoření vlastního spojovacího bodu zprostředkovatele.
Příklad kódu má tři části:
Zdrojový soubor, který obsahuje ovládací prvek zprostředkovatele WebPart , ovládací prvek příjemce WebPart a vlastní ConsumerConnectionPoint objekt.
Webová stránka, která je hostitelem ovládacích prvků ve statickém připojení.
Vysvětlení, jak spustit ukázkový kód.
První část příkladu kódu je zdrojem ovládacích prvků zprostředkovatele a příjemce WebPart a vlastní ConsumerConnectionPoint třída s názvem TableConsumerConnectionPoint
. Všimněte si, že konstruktor TableConsumerConnectionPoint
třídy volá základní konstruktor a předává mu požadované parametry, jak je uvedeno v části Parametry. Všimněte si také, že ve TableConsumer
třídě je metoda určena jako metoda zpětného volání pro připojení a ConnectionConsumer
atribut deklaruje vlastní TableConsumerConnectionPoint
jako SetConnectionInterface
parametr. To ukazuje, jak vytvořit vlastní bod připojení příjemce a pak ho přidružit k ovládacímu prvku příjemce. Tento příklad předpokládá, že zdrojový kód je dynamicky kompilován, takže byste měli umístit soubor zdrojového kódu do App_Code podsložky webové aplikace.
using System;
using System.Collections;
using System.ComponentModel;
using System.Data;
using System.Reflection;
using System.Web;
using System.Web.UI;
using System.Security.Permissions;
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 table data.
namespace Samples.AspNet.CS.Controls
{
[AspNetHostingPermission(SecurityAction.Demand,
Level = AspNetHostingPermissionLevel.Minimal)]
[AspNetHostingPermission(SecurityAction.InheritanceDemand,
Level = AspNetHostingPermissionLevel.Minimal)]
public sealed class TableProviderWebPart : WebPart, IWebPartTable
{
DataTable _table;
public TableProviderWebPart()
{
_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);
}
public PropertyDescriptorCollection Schema
{
get
{
return TypeDescriptor.GetProperties(_table.DefaultView[0]);
}
}
public void GetTableData(TableCallback callback)
{
callback(_table.Rows);
}
public bool ConnectionPointEnabled
{
get
{
object o = ViewState["ConnectionPointEnabled"];
return (o != null) ? (bool)o : true;
}
set
{
ViewState["ConnectionPointEnabled"] = value;
}
}
[ConnectionProvider("Table", typeof(TableProviderConnectionPoint), AllowsMultipleConnections = true)]
public IWebPartTable GetConnectionInterface()
{
return new TableProviderWebPart();
}
public class TableProviderConnectionPoint : ProviderConnectionPoint
{
public TableProviderConnectionPoint(MethodInfo callbackMethod, Type interfaceType, Type controlType,
string name, string id, bool allowsMultipleConnections) : base(
callbackMethod, interfaceType, controlType,
name, id, allowsMultipleConnections)
{
}
public override bool GetEnabled(Control control)
{
return ((TableProviderWebPart)control).ConnectionPointEnabled;
}
}
}
// This code sample demonstrates a custom WebPart controls that acts as
// a consumer in a Web Parts connection.
[AspNetHostingPermission(SecurityAction.Demand,
Level = AspNetHostingPermissionLevel.Minimal)]
[AspNetHostingPermission(SecurityAction.InheritanceDemand,
Level = AspNetHostingPermissionLevel.Minimal)]
public class TableConsumer : WebPart
{
private IWebPartTable _provider;
private ICollection _tableData;
private void GetTableData(object tableData)
{
_tableData = (ICollection)tableData;
}
protected override void OnPreRender(EventArgs e)
{
if (_provider != null)
{
_provider.GetTableData(new TableCallback(GetTableData));
}
}
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("Table")]
public void SetConnectionInterface(IWebPartTable provider)
{
_provider = provider;
}
public class TableConsumerConnectionPoint : ConsumerConnectionPoint
{
public TableConsumerConnectionPoint(MethodInfo callbackMethod, Type interfaceType, Type controlType,
string name, string id, bool allowsMultipleConnections)
: base(
callbackMethod, interfaceType, controlType,
name, id, allowsMultipleConnections)
{
}
}
}
}
Druhou částí příkladu kódu je webová stránka, která hostuje vlastní ovládací prvky ve statickém připojení webových částí. V horní části stránky je direktiva, která Register
deklaruje předponu a obor názvů pro vlastní ovládací prvky. Připojení je deklarováno pomocí elementu <asp:webpartconnection>
a ovládací prvky zprostředkovatele a příjemce jsou deklarovány v rámci elementu <asp:webpartzone>
.
<%@ page language="C#" %>
<%@ register tagprefix="aspSample"
namespace="Samples.AspNet.CS.Controls" %>
<!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>IField Test Page</title>
</head>
<body>
<form id="form1" runat="server">
<div>
<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>
<aspSample:TableProviderWebPart ID="provider1" runat="server"
ToolTip="Web Parts Table Provider Control" />
<aspSample:TableConsumer ID="consumer1" runat="server"
ToolTip="Web Parts Table Consumer Control"/>
</zoneTemplate>
</asp:webpartzone>
</div>
</form>
</body>
</html>
Načtěte stránku v prohlížeči. Propojení mezi ovládacími prvky již existuje a příjemce zobrazí data od zprostředkovatele, protože připojení bylo na stránce deklarováno jako statické připojení.
Poznámky
Konstruktor ConsumerConnectionPoint pro ConsumerConnectionPoint třídu jednoduše volá základní konstruktor, předává mu různé parametry a inicializuje základní třídu.
Konstruktor základní třídy kontroluje řadu parametrů spojovacího bodu a může vyvolat několik výjimek. Seznam možných výjimek najdete v části Výjimky.
Voláním konstruktoru ConsumerConnectionPoint můžete vytvořit vlastní instanci ConsumerConnectionPoint třídy . Nicméně v případech, kdy jednoduše vytváříte připojení a nerozdávejte třídu, měli byste volat metodu GetConsumerConnectionPoints pro vrácení objektu spojovacího bodu od zprostředkovatele.