Aracılığıyla paylaş


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, bağlantı kurmak için tüketicilere bir arabirim örneği döndüren yöntemi.

interfaceType
Type

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

controlType
Type

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

displayName
String

Bağlantı kullanıcı arabiriminde (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üretmeyi 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 denetimleri için kaynak ve adlı TableConsumerConnectionPointözel ConsumerConnectionPoint bir sınıftır. sınıfının oluşturucusunun TableConsumerConnectionPoint temel oluşturucuyu çağırdığını ve Parametreler bölümünde belirtildiği gibi gerekli parametreleri geçirdiğini unutmayın. Sınıfında yönteminin TableConsumerSetConnectionInterface 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 de 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ü, özel denetimleri statik Web bölümleri bağlantısında 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> öğesi 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 gelen verileri görüntüler.

Açıklamalar

ConsumerConnectionPoint Sınıfın oluşturucusunun ConsumerConnectionPoint temel oluşturucuyu çağırması yeterlidir. Buna çeşitli parametreler geçirilip temel sınıf başlatılır.

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ı oluşturduğunuz ve sınıfını 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.