ConsumerConnectionPoint Oluşturucu

Tanım

ConsumerConnectionPoint sınıfının yeni bir örneğini başlatır.

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)

Parametreler

callbackMethod
MethodInfo

Tüketici denetiminde bir arabirim örneğini tüketicilere döndürerek bağlantı kurmasını sağlayan yöntem.

interfaceType
Type

Tüketicinin Type bir sağlayıcıdan aldığı arabirimin.

controlType
Type

Tüketici Type bağlantı noktasının ilişkilendirildiği tüketici denetiminin.

displayName
String

Bağlantı kullanıcı arabirimindeki (UI) kullanıcılara gösterilen tüketici bağlantı noktası için kolay görünen ad.

id
String

Tüketici bağlantı noktası için benzersiz tanımlayıcı.

allowsMultipleConnections
Boolean

Tüketici bağlantı noktasının sağlayıcılarla aynı anda birden çok bağlantıya sahip olup olmadığını gösteren boole değeri.

Özel durumlar

callbackMethod, null değeridir.

-veya- interfaceType, null değeridir.

-veya- controlType, null değeridir.

-veya- displayName veya null boş bir dize ("").

controlType , tüketici denetimiyle (veya ondan türetilen geçerli bir sınıfla) aynı tür değildir.

Örnekler

Aşağıdaki kod örneği, özel bir sağlayıcı bağlantı noktası oluşturmak için sınıfından ConsumerConnectionPoint türetme işlemini gösterir.

Kod örneğinin üç bölümü vardır:

  • Sağlayıcı WebPart denetimi, tüketici WebPart denetimi ve özel ConsumerConnectionPoint nesne içeren bir kaynak dosya.

  • Denetimleri statik bir bağlantıda barındıran bir Web sayfası.

  • Örnek kodu çalıştırmanın açıklaması.

Kod örneğinin ilk bölümü sağlayıcı ve tüketici WebPart denetimlerinin kaynağı ve adlı TableConsumerConnectionPointözel ConsumerConnectionPoint bir sınıftır. Sınıfının oluşturucusunun TableConsumerConnectionPoint , Parametreler bölümünde belirtildiği gibi gerekli parametreleri geçirerek temel oluşturucuyu çağırdığını unutmayın. Ayrıca sınıfında yönteminin TableConsumer SetConnectionInterface bağlantılar için geri çağırma yöntemi olarak belirtildiğini ve özniteliğinin ConnectionConsumer özel TableConsumerConnectionPoint değerini parametre olarak bildirdiğini unutmayın. Bu, özel bir tüketici bağlantı noktası oluşturmayı ve ardından bunu bir tüketici denetimiyle ilişkilendirmeyi gösterir. Bu örnekte kaynak kodun dinamik olarak derlendiği varsayılır, bu nedenle kaynak kod dosyasını Web uygulamanızın App_Code bir alt klasörüne yerleştirmeniz gerekir.

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)
      {
      }
    }
  }
}

Kod örneğinin ikinci bölümü, statik Web bölümleri bağlantısında özel denetimleri barındıran Web sayfasıdır. Sayfanın en üstünde, özel denetimler için bir ön ek ve ad alanı bildirme yönergesi bulunur Register . Bağlantı bir <asp:webpartconnection> öğe kullanılarak bildirilir ve sağlayıcı ve tüketici denetimleri bir <asp:webpartzone> öğe içinde bildirilir.

<%@ 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>

Sayfayı bir tarayıcıda yükleyin. Denetimler arasındaki bağlantı zaten var ve bağlantı sayfada statik bağlantı olarak bildirildiği için tüketici sağlayıcıdan verileri görüntüler.

Açıklamalar

Sınıfın ConsumerConnectionPoint oluşturucusunun ConsumerConnectionPoint temel oluşturucuyu çağırması, çeşitli parametreleri geçirmesi ve temel sınıfı başlatması yeterlidir.

Temel sınıf oluşturucu, bir bağlantı noktası için bir dizi parametreyi denetler ve birkaç özel durum oluşturabilir. Olası özel durumların listesi için Özel Durumlar bölümüne bakın.

Sınıfının kendi örneğini ConsumerConnectionPoint oluşturmak için oluşturucuyu ConsumerConnectionPoint çağırabilirsiniz. Ancak, yalnızca bir bağlantı kurup sınıfı genişletmediğiniz durumlarda, bir sağlayıcıdan bağlantı noktası nesnesi döndürmek için yöntemini çağırmanız GetConsumerConnectionPoints gerekir.

Şunlara uygulanır

Ayrıca bkz.