ConsumerConnectionPoint Konstruktor
Definisi
Penting
Beberapa informasi terkait produk prarilis yang dapat diubah secara signifikan sebelum dirilis. Microsoft tidak memberikan jaminan, tersirat maupun tersurat, sehubungan dengan informasi yang diberikan di sini.
Menginisialisasi instans baru kelas ConsumerConnectionPoint.
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)
Parameter
- callbackMethod
- MethodInfo
Metode dalam kontrol konsumen yang mengembalikan instans antarmuka kepada konsumen untuk membuat koneksi.
- displayName
- String
Nama tampilan yang mudah diingat untuk titik koneksi konsumen yang muncul untuk pengguna di antarmuka pengguna koneksi (UI).
- id
- String
Pengidentifikasi unik untuk titik koneksi konsumen.
- allowsMultipleConnections
- Boolean
Nilai Boolean yang menunjukkan apakah titik koneksi konsumen dapat memiliki beberapa koneksi bersamaan dengan penyedia.
Pengecualian
callbackMethod
adalah null
.
-atau-
interfaceType
adalah null
.
-atau-
controlType
adalah null
.
-atau-
displayName
adalah null
atau string kosong ("").
controlType
bukan jenis yang sama dengan kontrol konsumen (atau kelas valid yang berasal darinya).
Contoh
Contoh kode berikut menunjukkan cara memperoleh dari ConsumerConnectionPoint kelas untuk membuat titik koneksi penyedia kustom.
Contoh kode memiliki tiga bagian:
File sumber yang berisi kontrol penyedia WebPart , kontrol konsumen WebPart , dan objek kustom ConsumerConnectionPoint .
Halaman Web yang menghosting kontrol dalam koneksi statis.
Penjelasan tentang cara menjalankan kode contoh.
Bagian pertama dari contoh kode adalah sumber untuk kontrol penyedia dan konsumen WebPart , dan kelas kustom ConsumerConnectionPoint , bernama TableConsumerConnectionPoint
. Perhatikan bahwa konstruktor TableConsumerConnectionPoint
kelas memanggil konstruktor dasar, meneruskannya parameter yang diperlukan seperti yang ditunjukkan di bagian Parameter. Perhatikan juga bahwa di TableConsumer
kelas , SetConnectionInterface
metode ditentukan sebagai metode panggilan balik untuk koneksi, dan ConnectionConsumer
atribut mendeklarasikan kustom TableConsumerConnectionPoint
sebagai parameter. Ini menunjukkan cara membuat titik koneksi konsumen kustom dan kemudian mengaitkannya dengan kontrol konsumen. Contoh ini mengasumsikan bahwa kode sumber dikompilasi secara dinamis, jadi Anda harus menempatkan file kode sumber dalam subfolder App_Code aplikasi Web Anda.
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)
{
}
}
}
}
Bagian kedua dari contoh kode adalah halaman Web yang menghosting kontrol kustom dalam koneksi bagian Web statis. Di bagian atas halaman adalah Register
arahan untuk mendeklarasikan awalan dan namespace untuk kontrol kustom. Koneksi dideklarasikan dengan menggunakan <asp:webpartconnection>
elemen , dan kontrol penyedia dan konsumen dinyatakan dalam <asp:webpartzone>
elemen .
<%@ 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>
Muat halaman di browser. Koneksi antara kontrol sudah ada, dan konsumen menampilkan data dari penyedia, karena koneksi dinyatakan sebagai koneksi statis di halaman.
Keterangan
Konstruktor ConsumerConnectionPoint untuk ConsumerConnectionPoint kelas hanya memanggil konstruktor dasar, meneruskannya ke berbagai parameter dan menginisialisasi kelas dasar.
Konstruktor kelas dasar memeriksa sejumlah parameter untuk titik koneksi dan dapat melemparkan beberapa pengecualian. Untuk daftar kemungkinan pengecualian, lihat bagian Pengecualian.
Anda dapat memanggil ConsumerConnectionPoint konstruktor untuk membuat instans ConsumerConnectionPoint kelas Anda sendiri. Namun, dalam kasus di mana Anda hanya membuat koneksi dan tidak memperluas kelas, Anda harus memanggil GetConsumerConnectionPoints metode untuk mengembalikan objek titik koneksi dari penyedia.