ConsumerConnectionPoint Costruttore
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.
Inizializza una nuova istanza della classe ConsumerConnectionPoint.
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)
Parametri
- callbackMethod
- MethodInfo
Metodo del controllo consumer che restituisce ai consumer un'istanza dell'interfaccia per stabilire una connessione.
- controlType
- Type
Oggetto Type del controllo consumer a cui viene associato il punto di connessione del consumer.
- displayName
- String
Nome visualizzato descrittivo per il punto di connessione del consumer presentato agli utenti nell'interfaccia utente di connessione.
- id
- String
Identificatore univoco per il punto di connessione del consumer.
- allowsMultipleConnections
- Boolean
Valore Boolean che indica se il punto di connessione del consumer può disporre di più connessioni simultanee con i provider.
Eccezioni
callbackMethod
è null
.
-oppure-
interfaceType
è null
.
-oppure-
controlType
è null
.
-oppure-
displayName
è null
o è una stringa vuota ("").
controlType
non è dello stesso tipo del controllo consumer o di una classe valida da esso derivata.
Esempio
Nell'esempio di codice seguente viene illustrato come derivare dalla ConsumerConnectionPoint classe per creare un punto di connessione del provider personalizzato.
L'esempio di codice include tre parti:
File di origine che contiene un controllo provider WebPart , un controllo consumer WebPart e un oggetto personalizzato ConsumerConnectionPoint .
Pagina Web che ospita i controlli in una connessione statica.
Spiegazione di come eseguire il codice di esempio.
La prima parte dell'esempio di codice è l'origine per i controlli provider e consumer WebPart e una classe personalizzata denominata ConsumerConnectionPointTableConsumerConnectionPoint
. Si noti che il costruttore della TableConsumerConnectionPoint
classe chiama il costruttore di base, passando i parametri obbligatori come indicato nella sezione Parametri. Si noti anche che nella TableConsumer
classe il SetConnectionInterface
metodo viene specificato come metodo di callback per le connessioni e l'attributo dichiara l'oggetto ConnectionConsumer
personalizzato TableConsumerConnectionPoint
come parametro. Viene illustrato come creare un punto di connessione consumer personalizzato e quindi associarlo a un controllo consumer. In questo esempio si presuppone che il codice sorgente sia compilato in modo dinamico, pertanto è necessario inserire il file di codice sorgente in una sottocartella App_Code dell'applicazione Web.
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)
{
}
}
}
}
La seconda parte dell'esempio di codice è la pagina Web che ospita i controlli personalizzati in una connessione web part statica. Nella parte superiore della pagina è presente una Register
direttiva per dichiarare un prefisso e lo spazio dei nomi per i controlli personalizzati. La connessione viene dichiarata tramite un <asp:webpartconnection>
elemento e i controlli provider e consumer vengono dichiarati all'interno di un <asp:webpartzone>
elemento.
<%@ 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>
Caricare la pagina in un browser. La connessione tra i controlli esiste già e il consumer visualizza i dati del provider, perché la connessione è stata dichiarata come connessione statica nella pagina.
Commenti
Il ConsumerConnectionPoint costruttore per la ConsumerConnectionPoint classe chiama semplicemente il costruttore di base, passando al costruttore i vari parametri e inizializzando la classe di base.
Il costruttore della classe base controlla un numero di parametri per un punto di connessione e può generare diverse eccezioni. Per un elenco delle possibili eccezioni, vedere la sezione Eccezioni.
È possibile chiamare il ConsumerConnectionPoint costruttore per creare la propria istanza della ConsumerConnectionPoint classe . Tuttavia, nei casi in cui si sta semplicemente stabilendo una connessione e non estendendo la classe, è necessario chiamare il GetConsumerConnectionPoints metodo per restituire un oggetto punto di connessione da un provider.
Si applica a
Vedi anche
Commenti e suggerimenti
https://aka.ms/ContentUserFeedback.
Presto disponibile: Nel corso del 2024 verranno gradualmente disattivati i problemi di GitHub come meccanismo di feedback per il contenuto e ciò verrà sostituito con un nuovo sistema di feedback. Per altre informazioni, vedereInvia e visualizza il feedback per