ConsumerConnectionPoint Oluşturucu
Tanım
Önemli
Bazı bilgiler ürünün ön sürümüyle ilgilidir ve sürüm öncesinde önemli değişiklikler yapılmış olabilir. Burada verilen bilgilerle ilgili olarak Microsoft açık veya zımni hiçbir garanti vermez.
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.
- 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 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 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.