Bagikan melalui


ProviderConnectionPoint Konstruktor

Definisi

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.

interfaceType
Type

Antarmuka Type yang dilayani penyedia kepada konsumen.

controlType
Type

Kontrol Type penyedia tempat titik koneksi penyedia dikaitkan.

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

callbackMethodadalah null.

-atau-

interfaceTypeadalah null.

-atau-

controlTypeadalah 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