Sdílet prostřednictvím


ConsumerConnectionPoint Konstruktor

Definice

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í.

interfaceType
Type

Rozhraní Type , které příjemce obdrží od poskytovatele.

controlType
Type

Type ovládacího prvku příjemce, ke kterému je bod připojení příjemce přidružen.

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.

Platí pro

Viz také