ProviderConnectionPoint 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 ProviderConnectionPoint.
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)
Parameter
- callbackMethod
- MethodInfo
Metode dalam kontrol penyedia yang mengembalikan instans antarmuka kepada konsumen untuk membuat koneksi.
- displayName
- String
Nama tampilan yang mudah diingat untuk titik koneksi penyedia yang muncul untuk pengguna di antarmuka pengguna koneksi (UI).
- id
- String
Pengidentifikasi unik untuk titik koneksi penyedia.
- allowsMultipleConnections
- Boolean
Nilai Boolean yang menunjukkan apakah titik koneksi penyedia dapat memiliki beberapa koneksi simultan dengan konsumen.
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 penyedia (atau kelas valid yang berasal darinya).
Contoh
Contoh kode berikut menunjukkan cara memperoleh dari ProviderConnectionPoint 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 ProviderConnectionPoint .
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 ProviderConnectionPoint , bernama TableProviderConnectionPoint
. Perhatikan bahwa konstruktor TableProviderConnectionPoint
kelas memanggil konstruktor dasar, meneruskannya parameter yang diperlukan seperti yang ditunjukkan di bagian Parameter. Perhatikan juga bahwa di TableProviderWebPart
kelas , GetConnectionInterface
metode ditentukan sebagai metode panggilan balik untuk koneksi, dan ConnectionProvider
atribut mendeklarasikan kustom TableProviderConnectionPoint
sebagai parameter. Ini menunjukkan cara membuat titik koneksi penyedia kustom lalu mengaitkannya dengan kontrol penyedia. 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
direktif untuk mendeklarasikan awalan dan namespace layanan 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 ProviderConnectionPoint untuk ProviderConnectionPoint 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 ProviderConnectionPoint konstruktor untuk membuat instans ProviderConnectionPoint kelas Anda sendiri. Namun, dalam kasus di mana Anda hanya membuat koneksi dan tidak memperluas kelas, Anda harus memanggil GetProviderConnectionPoints metode untuk mengembalikan objek titik koneksi yang ada dari penyedia.
Berlaku untuk
Lihat juga
Saran dan Komentar
https://aka.ms/ContentUserFeedback.
Segera hadir: Sepanjang tahun 2024 kami akan menghentikan penggunaan GitHub Issues sebagai mekanisme umpan balik untuk konten dan menggantinya dengan sistem umpan balik baru. Untuk mengetahui informasi selengkapnya, lihat:Kirim dan lihat umpan balik untuk