ProviderConnectionPoint 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 ProviderConnectionPoint třídy.
public:
ProviderConnectionPoint(System::Reflection::MethodInfo ^ callbackMethod, Type ^ interfaceType, Type ^ controlType, System::String ^ displayName, System::String ^ id, bool allowsMultipleConnections);
public ProviderConnectionPoint (System.Reflection.MethodInfo callbackMethod, Type interfaceType, Type controlType, string displayName, string id, bool allowsMultipleConnections);
new System.Web.UI.WebControls.WebParts.ProviderConnectionPoint : System.Reflection.MethodInfo * Type * Type * string * string * bool -> System.Web.UI.WebControls.WebParts.ProviderConnectionPoint
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 zprostředkovatele, který vrací instanci rozhraní příjemcům za účelem navázání připojení.
- controlType
- Type
Ovládací Type prvek zprostředkovatele, ke kterému je spojovací bod zprostředkovatele přidružený.
- displayName
- String
Popisný zobrazovaný název spojovacího bodu poskytovatele, který se zobrazí uživatelům v uživatelském rozhraní připojení.
- id
- String
Jedinečný identifikátor spojovacího bodu zprostředkovatele.
- allowsMultipleConnections
- Boolean
Logická hodnota označující, zda spojovací bod zprostředkovatele může mít více souběžných připojení k příjemcům.
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 zprostředkovatele (nebo z něj odvozená platná třída).
Příklady
Následující příklad kódu ukazuje, jak odvodit z ProviderConnectionPoint třídy vytvořit vlastní spojovací bod 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í ProviderConnectionPoint objekt.
Webová stránka, která hostuje ovládací prvky ve statickém připojení.
Vysvětlení, jak spustit ukázkový kód
První část příkladu kódu je zdroj pro ovládací prvky zprostředkovatele a příjemce WebPart a vlastní ProviderConnectionPoint třída s názvem TableProviderConnectionPoint
. Všimněte si, že konstruktor TableProviderConnectionPoint
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 TableProviderWebPart
třídě je metoda určena jako metoda zpětného volání pro připojení a ConnectionProvider
atribut deklaruje vlastní TableProviderConnectionPoint
jako GetConnectionInterface
parametr. To ukazuje, jak vytvořit vlastní spojovací bod zprostředkovatele a pak ho přidružit k ovládacímu prvku zprostředkovatele. Tento příklad předpokládá, že zdrojový kód je dynamicky kompilován, takže byste měli soubor zdrojového kódu umístit do podsložky App_Code 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 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 ProviderConnectionPoint pro ProviderConnectionPoint třídu jednoduše zavolá základní konstruktor, předá 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.
Můžete volat ProviderConnectionPoint konstruktor k vytvoření vlastní instance ProviderConnectionPoint třídy. V případech, kdy jednoduše navazujete připojení a nerozšlete třídu, byste měli volat metodu GetProviderConnectionPoints pro vrácení existujícího objektu spojovacího bodu od poskytovatele.