Aracılığıyla paylaş


ProviderConnectionPoint Oluşturucu

Tanım

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

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)

Parametreler

callbackMethod
MethodInfo

Sağlayıcı denetiminde, bağlantı kurmak için tüketicilere bir arabirim örneği döndüren yöntem.

interfaceType
Type

Type Sağlayıcının tüketicilere hizmet yaptığı arabirimin.

controlType
Type

Sağlayıcı Type bağlantı noktasının ilişkilendirildiği sağlayıcı denetiminin.

displayName
String

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

id
String

Sağlayıcı bağlantı noktası için benzersiz tanımlayıcı.

allowsMultipleConnections
Boolean

Sağlayıcı bağlantı noktasının tüketicilerle 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 sağlayıcı denetimiyle (veya bu denetimden 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 ProviderConnectionPoint 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 ProviderConnectionPoint 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ı TableProviderConnectionPointözel ProviderConnectionPoint bir sınıftır. Sınıfının oluşturucusunun TableProviderConnectionPoint , 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 TableProviderWebPartGetConnectionInterface bağlantılar için geri çağırma yöntemi olarak belirtildiğini ve özniteliğinin ConnectionProvider özel TableProviderConnectionPoint değerini parametre olarak bildirdiğini unutmayın. Bu, özel bir sağlayıcı bağlantı noktası oluşturmayı ve ardından bunu bir sağlayıcı 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 ProviderConnectionPoint oluşturucusunun ProviderConnectionPoint 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 ProviderConnectionPoint oluşturmak için oluşturucuyu ProviderConnectionPoint çağırabilirsiniz. Ancak, yalnızca bir bağlantı kurup sınıfı genişletmediğiniz durumlarda, bir sağlayıcıdan var olan bir bağlantı noktası nesnesini döndürmek için yöntemini çağırmanız GetProviderConnectionPoints gerekir.

Şunlara uygulanır

Ayrıca bkz.