Sdílet prostřednictvím


ProviderConnectionPoint Konstruktor

Definice

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

interfaceType
Type

Rozhraní Type , které poskytovatel slouží příjemcům.

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.

Platí pro

Viz také