Compartir vía


ConsumerConnectionPoint Constructor

Definición

Inicializa una nueva instancia de la clase 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)

Parámetros

callbackMethod
MethodInfo

Método del control consumidor que devuelve una instancia de interfaz a los consumidores para establecer una conexión.

interfaceType
Type

Type de la interfaz que el consumidor recibe de un proveedor.

controlType
Type

Type del control consumidor al que se asocia el punto de conexión del consumidor.

displayName
String

Nombre descriptivo del punto de conexión del consumidor que se muestra a los usuarios en la interfaz de usuario de conexión.

id
String

Identificador único para el punto de conexión del consumidor.

allowsMultipleConnections
Boolean

Valor booleano que indica si el punto de conexión del consumidor puede tener varias conexiones simultáneas con proveedores.

Excepciones

callbackMethod es null.

O bien

interfaceType es null.

O bien

controlType es null.

o bien

displayName es null o una cadena vacía ("").

controlType no es el mismo tipo que el control consumidor (o una clase válida derivada de él).

Ejemplos

En el ejemplo de código siguiente se muestra cómo derivar de la ConsumerConnectionPoint clase para crear un punto de conexión de proveedor personalizado.

El ejemplo de código tiene tres partes:

  • Un archivo de código fuente que contiene un control de proveedor WebPart , un control de consumidor WebPart y un objeto personalizado ConsumerConnectionPoint .

  • Página web que hospeda los controles en una conexión estática.

  • Explicación de cómo ejecutar el código de ejemplo.

La primera parte del ejemplo de código es el origen de los controles de proveedor y consumidor WebPart , y una clase personalizada ConsumerConnectionPoint , denominada TableConsumerConnectionPoint. Tenga en cuenta que el constructor de la TableConsumerConnectionPoint clase llama al constructor base y le pasa los parámetros necesarios como se indica en la sección Parámetros. Tenga en cuenta también que, en la TableConsumer clase , el SetConnectionInterface método se especifica como el método de devolución de llamada para las conexiones y el ConnectionConsumer atributo declara el personalizado TableConsumerConnectionPoint como parámetro. Esto muestra cómo crear un punto de conexión de consumidor personalizado y, a continuación, asociarlo a un control de consumidor. En este ejemplo se supone que el código fuente se compila dinámicamente, por lo que debe colocar el archivo de código fuente en una subcarpeta App_Code de la aplicación 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 segunda parte del ejemplo de código es la página web que hospeda los controles personalizados en una conexión de elementos web estáticos. En la parte superior de la página hay una Register directiva para declarar un prefijo y el espacio de nombres para los controles personalizados. La conexión se declara mediante un <asp:webpartconnection> elemento y los controles de proveedor y consumidor se declaran dentro de 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>

Cargue la página en un explorador. La conexión entre los controles ya existe y el consumidor muestra los datos del proveedor, porque la conexión se declaró como una conexión estática en la página.

Comentarios

El ConsumerConnectionPoint constructor de la ConsumerConnectionPoint clase simplemente llama al constructor base, pasando a él los distintos parámetros e inicializando la clase base.

El constructor de clase base comprueba una serie de parámetros para un punto de conexión y puede producir varias excepciones. Para obtener una lista de las posibles excepciones, consulte la sección Excepciones.

Puede llamar al ConsumerConnectionPoint constructor para crear su propia instancia de la ConsumerConnectionPoint clase . Sin embargo, en los casos en los que simplemente establece una conexión y no extiende la clase , debe llamar al GetConsumerConnectionPoints método para devolver un objeto de punto de conexión de un proveedor.

Se aplica a

Consulte también