WebPartConnection Kelas
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.
Menyediakan objek yang memungkinkan dua WebPart kontrol untuk membentuk koneksi. Kelas ini tidak dapat diwariskan.
public ref class WebPartConnection sealed
[System.ComponentModel.TypeConverter(typeof(System.ComponentModel.ExpandableObjectConverter))]
public sealed class WebPartConnection
[<System.ComponentModel.TypeConverter(typeof(System.ComponentModel.ExpandableObjectConverter))>]
type WebPartConnection = class
Public NotInheritable Class WebPartConnection
- Warisan
-
WebPartConnection
- Atribut
Contoh
Contoh kode berikut menunjukkan cara membuat koneksi sederhana antara dua WebPart kontrol. Contoh menunjukkan tiga cara membentuk koneksi: secara deklaratif, dengan menempatkan tag untuk koneksi di markup halaman Web; secara terprogram, dengan membuat koneksi dalam kode; dan melalui UI, dengan menempatkan ConnectionsZone kontrol pada halaman, yang memungkinkan pengguna untuk membuat koneksi.
Contoh kode memiliki empat bagian:
Kontrol pengguna yang memungkinkan Anda mengubah mode tampilan Bagian Web pada halaman.
Kode sumber untuk antarmuka dan dua WebPart kontrol yang bertindak sebagai penyedia dan konsumen untuk koneksi.
Halaman Web untuk menghosting semua kontrol dan menjalankan contoh kode.
Penjelasan tentang cara menjalankan halaman contoh.
Bagian pertama dari contoh kode ini adalah kontrol pengguna yang memungkinkan pengguna mengubah mode tampilan pada halaman Web. Simpan kode sumber berikut ke file .ascx, berikan nama file yang ditetapkan ke Src
atribut Register
direktif untuk kontrol pengguna ini, yang berada di dekat bagian atas halaman Web hosting. Untuk detail tentang mode tampilan dan deskripsi kode sumber dalam kontrol ini, lihat Panduan: Mengubah Mode Tampilan pada Halaman Bagian Web.
<%@ control language="C#" classname="DisplayModeMenuCS"%>
<script runat="server">
// Use a field to reference the current WebPartManager.
WebPartManager _manager;
void Page_Init(object sender, EventArgs e)
{
Page.InitComplete += new EventHandler(InitComplete);
}
void InitComplete(object sender, System.EventArgs e)
{
_manager = WebPartManager.GetCurrentWebPartManager(Page);
String browseModeName = WebPartManager.BrowseDisplayMode.Name;
// Fill the dropdown with the names of supported display modes.
foreach (WebPartDisplayMode mode in _manager.SupportedDisplayModes)
{
String modeName = mode.Name;
// Make sure a mode is enabled before adding it.
if (mode.IsEnabled(_manager))
{
ListItem item = new ListItem(modeName, modeName);
DisplayModeDropdown.Items.Add(item);
}
}
// If shared scope is allowed for this user, display the scope-switching
// UI and select the appropriate radio button for the current user scope.
if (_manager.Personalization.CanEnterSharedScope)
{
Panel2.Visible = true;
if (_manager.Personalization.Scope == PersonalizationScope.User)
RadioButton1.Checked = true;
else
RadioButton2.Checked = true;
}
}
// Change the page to the selected display mode.
void DisplayModeDropdown_SelectedIndexChanged(object sender, EventArgs e)
{
String selectedMode = DisplayModeDropdown.SelectedValue;
WebPartDisplayMode mode = _manager.SupportedDisplayModes[selectedMode];
if (mode != null)
_manager.DisplayMode = mode;
}
// Set the selected item equal to the current display mode.
void Page_PreRender(object sender, EventArgs e)
{
ListItemCollection items = DisplayModeDropdown.Items;
int selectedIndex =
items.IndexOf(items.FindByText(_manager.DisplayMode.Name));
DisplayModeDropdown.SelectedIndex = selectedIndex;
}
// Reset all of a user's personalization data for the page.
protected void LinkButton1_Click(object sender, EventArgs e)
{
_manager.Personalization.ResetPersonalizationState();
}
// If not in User personalization scope, toggle into it.
protected void RadioButton1_CheckedChanged(object sender, EventArgs e)
{
if (_manager.Personalization.Scope == PersonalizationScope.Shared)
_manager.Personalization.ToggleScope();
}
// If not in Shared scope, and if user is allowed, toggle the scope.
protected void RadioButton2_CheckedChanged(object sender, EventArgs e)
{
if (_manager.Personalization.CanEnterSharedScope &&
_manager.Personalization.Scope == PersonalizationScope.User)
_manager.Personalization.ToggleScope();
}
</script>
<div>
<asp:Panel ID="Panel1" runat="server"
Borderwidth="1"
Width="230"
BackColor="lightgray"
Font-Names="Verdana, Arial, Sans Serif" >
<asp:Label ID="Label1" runat="server"
Text=" Display Mode"
Font-Bold="true"
Font-Size="8"
Width="120"
AssociatedControlID="DisplayModeDropdown"/>
<asp:DropDownList ID="DisplayModeDropdown" runat="server"
AutoPostBack="true"
Width="120"
OnSelectedIndexChanged="DisplayModeDropdown_SelectedIndexChanged" />
<asp:LinkButton ID="LinkButton1" runat="server"
Text="Reset User State"
ToolTip="Reset the current user's personalization data for the page."
Font-Size="8"
OnClick="LinkButton1_Click" />
<asp:Panel ID="Panel2" runat="server"
GroupingText="Personalization Scope"
Font-Bold="true"
Font-Size="8"
Visible="false" >
<asp:RadioButton ID="RadioButton1" runat="server"
Text="User"
AutoPostBack="true"
GroupName="Scope" OnCheckedChanged="RadioButton1_CheckedChanged" />
<asp:RadioButton ID="RadioButton2" runat="server"
Text="Shared"
AutoPostBack="true"
GroupName="Scope"
OnCheckedChanged="RadioButton2_CheckedChanged" />
</asp:Panel>
</asp:Panel>
</div>
<%@ control language="vb" classname="DisplayModeMenuVB"%>
<script runat="server">
' Use a field to reference the current WebPartManager.
Dim _manager As WebPartManager
Sub Page_Init(ByVal sender As Object, ByVal e As EventArgs)
AddHandler Page.InitComplete, AddressOf InitComplete
End Sub
Sub InitComplete(ByVal sender As Object, ByVal e As System.EventArgs)
_manager = WebPartManager.GetCurrentWebPartManager(Page)
Dim browseModeName As String = WebPartManager.BrowseDisplayMode.Name
' Fill the dropdown with the names of supported display modes.
Dim mode As WebPartDisplayMode
For Each mode In _manager.SupportedDisplayModes
Dim modeName As String = mode.Name
' Make sure a mode is enabled before adding it.
If mode.IsEnabled(_manager) Then
Dim item As New ListItem(modeName, modeName)
DisplayModeDropdown.Items.Add(item)
End If
Next mode
' If shared scope is allowed for this user, display the scope-switching
' UI and select the appropriate radio button for the current user scope.
If _manager.Personalization.CanEnterSharedScope Then
Panel2.Visible = True
If _manager.Personalization.Scope = PersonalizationScope.User Then
RadioButton1.Checked = True
Else
RadioButton2.Checked = True
End If
End If
End Sub
' Change the page to the selected display mode.
Sub DisplayModeDropdown_SelectedIndexChanged(ByVal sender As Object, _
ByVal e As EventArgs)
Dim selectedMode As String = DisplayModeDropdown.SelectedValue
Dim mode As WebPartDisplayMode = _
_manager.SupportedDisplayModes(selectedMode)
If Not (mode Is Nothing) Then
_manager.DisplayMode = mode
End If
End Sub
' Set the selected item equal to the current display mode.
Sub Page_PreRender(ByVal sender As Object, ByVal e As EventArgs)
Dim items As ListItemCollection = DisplayModeDropdown.Items
Dim selectedIndex As Integer = _
items.IndexOf(items.FindByText(_manager.DisplayMode.Name))
DisplayModeDropdown.SelectedIndex = selectedIndex
End Sub
' Reset all of a user's personalization data for the page.
Protected Sub LinkButton1_Click(ByVal sender As Object, _
ByVal e As EventArgs)
_manager.Personalization.ResetPersonalizationState()
End Sub
' If not in User personalization scope, toggle into it.
Protected Sub RadioButton1_CheckedChanged(ByVal sender As Object, _
ByVal e As EventArgs)
If _manager.Personalization.Scope = PersonalizationScope.Shared Then
_manager.Personalization.ToggleScope()
End If
End Sub
' If not in Shared scope, and if user is allowed, toggle the scope.
Protected Sub RadioButton2_CheckedChanged(ByVal sender As Object, _
ByVal e As EventArgs)
If _manager.Personalization.CanEnterSharedScope AndAlso _
_manager.Personalization.Scope = PersonalizationScope.User Then
_manager.Personalization.ToggleScope()
End If
End Sub
</script>
<div>
<asp:Panel ID="Panel1" runat="server"
Borderwidth="1"
Width="230"
BackColor="lightgray"
Font-Names="Verdana, Arial, Sans Serif" >
<asp:Label ID="Label1" runat="server"
Text=" Display Mode"
Font-Bold="true"
Font-Size="8"
Width="120"
AssociatedControlID="DisplayModeDropdown"/>
<asp:DropDownList ID="DisplayModeDropdown" runat="server"
AutoPostBack="true"
Width="120"
OnSelectedIndexChanged="DisplayModeDropdown_SelectedIndexChanged" />
<asp:LinkButton ID="LinkButton1" runat="server"
Text="Reset User State"
ToolTip="Reset the current user's personalization data for the page."
Font-Size="8"
OnClick="LinkButton1_Click" />
<asp:Panel ID="Panel2" runat="server"
GroupingText="Personalization Scope"
Font-Bold="true"
Font-Size="8"
Visible="false" >
<asp:RadioButton ID="RadioButton1" runat="server"
Text="User"
AutoPostBack="true"
GroupName="Scope" OnCheckedChanged="RadioButton1_CheckedChanged" />
<asp:RadioButton ID="RadioButton2" runat="server"
Text="Shared"
AutoPostBack="true"
GroupName="Scope"
OnCheckedChanged="RadioButton2_CheckedChanged" />
</asp:Panel>
</asp:Panel>
</div>
Bagian kedua dari contoh kode adalah kode sumber untuk antarmuka dan kontrol. File sumber berisi antarmuka sederhana bernama IZipCode
. Ada juga WebPart kelas bernama ZipCodeWebPart
yang mengimplementasikan antarmuka dan bertindak sebagai kontrol penyedia. Metodenya ProvideIZipCode
adalah metode panggilan balik yang mengimplementasikan satu-satunya anggota antarmuka. Metode ini hanya mengembalikan instans antarmuka. Perhatikan bahwa metode ditandai dengan ConnectionProvider
atribut dalam metadatanya. Ini adalah mekanisme untuk mengidentifikasi metode sebagai metode panggilan balik untuk titik koneksi penyedia. Kelas lainnya WebPart diberi nama WeatherWebPart
, dan bertindak sebagai konsumen untuk koneksi. Kelas ini memiliki metode bernama GetZipCode
yang mendapatkan instans IZipCode
antarmuka dari kontrol penyedia. Perhatikan bahwa metode ini ditandai sebagai metode titik koneksi konsumen dengan ConnectionConsumer
atribut dalam metadatanya.
Agar contoh kode berjalan, Anda harus mengkompilasi kode sumber ini. Anda dapat mengkompilasinya secara eksplisit dan menempatkan rakitan yang dihasilkan di folder Bin situs Web Anda atau singgahan perakitan global. Atau, Anda dapat meletakkan kode sumber di folder App_Code situs Anda, tempat kode tersebut akan dikompilasi secara dinamis pada durasi. Contoh kode ini menggunakan kompilasi dinamis. Untuk panduan yang menunjukkan cara mengkompilasi, lihat Panduan: Mengembangkan dan Menggunakan Kontrol Server Web Kustom.
namespace Samples.AspNet.CS.Controls
{
using System;
using System.Web;
using System.Web.Security;
using System.Security.Permissions;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
[AspNetHostingPermission(SecurityAction.Demand,
Level = AspNetHostingPermissionLevel.Minimal)]
[AspNetHostingPermission(SecurityAction.InheritanceDemand,
Level = AspNetHostingPermissionLevel.Minimal)]
public interface IZipCode
{
string ZipCode { get; set;}
}
[AspNetHostingPermission(SecurityAction.Demand,
Level = AspNetHostingPermissionLevel.Minimal)]
[AspNetHostingPermission(SecurityAction.InheritanceDemand,
Level = AspNetHostingPermissionLevel.Minimal)]
public class ZipCodeWebPart : WebPart, IZipCode
{
string zipCodeText = String.Empty;
TextBox input;
Button send;
public ZipCodeWebPart()
{
}
// Make the implemented property personalizable to save
// the Zip Code between browser sessions.
[Personalizable()]
public virtual string ZipCode
{
get { return zipCodeText; }
set { zipCodeText = value; }
}
// This is the callback method that returns the provider.
[ConnectionProvider("Zip Code Provider", "ZipCodeProvider")]
public IZipCode ProvideIZipCode()
{
return this;
}
protected override void CreateChildControls()
{
Controls.Clear();
input = new TextBox();
this.Controls.Add(input);
send = new Button();
send.Text = "Enter 5-digit Zip Code";
send.Click += new EventHandler(this.submit_Click);
this.Controls.Add(send);
}
private void submit_Click(object sender, EventArgs e)
{
if (!string.IsNullOrEmpty(input.Text))
{
zipCodeText = Page.Server.HtmlEncode(input.Text);
input.Text = String.Empty;
}
}
}
[AspNetHostingPermission(SecurityAction.Demand,
Level = AspNetHostingPermissionLevel.Minimal)]
[AspNetHostingPermission(SecurityAction.InheritanceDemand,
Level = AspNetHostingPermissionLevel.Minimal)]
public class WeatherWebPart : WebPart
{
private IZipCode _provider;
string _zipSearch;
Label DisplayContent;
// This method is identified by the ConnectionConsumer
// attribute, and is the mechanism for connecting with
// the provider.
[ConnectionConsumer("Zip Code Consumer", "ZipCodeConsumer")]
public void GetIZipCode(IZipCode Provider)
{
_provider = Provider;
}
protected override void OnPreRender(EventArgs e)
{
EnsureChildControls();
if (this._provider != null)
{
_zipSearch = _provider.ZipCode.Trim();
DisplayContent.Text = "My Zip Code is: " + _zipSearch;
}
}
protected override void CreateChildControls()
{
Controls.Clear();
DisplayContent = new Label();
this.Controls.Add(DisplayContent);
}
}
}
Imports System.Web
Imports System.Web.Security
Imports System.Security.Permissions
Imports System.Web.UI
Imports System.Web.UI.WebControls
Imports System.Web.UI.WebControls.WebParts
Namespace Samples.AspNet.VB.Controls
<AspNetHostingPermission(SecurityAction.Demand, _
Level:=AspNetHostingPermissionLevel.Minimal)> _
<AspNetHostingPermission(SecurityAction.InheritanceDemand, _
Level:=AspNetHostingPermissionLevel.Minimal)> _
Public Interface IZipCode
Property ZipCode() As String
End Interface
<AspNetHostingPermission(SecurityAction.Demand, _
Level:=AspNetHostingPermissionLevel.Minimal)> _
<AspNetHostingPermission(SecurityAction.InheritanceDemand, _
Level:=AspNetHostingPermissionLevel.Minimal)> _
Public Class ZipCodeWebPart
Inherits WebPart
Implements IZipCode
Private zipCodeText As String = String.Empty
Private input As TextBox
Private send As Button
Public Sub New()
End Sub
' Make the implemented property personalizable to save
' the Zip Code between browser sessions.
<Personalizable()> _
Public Property ZipCode() As String _
Implements IZipCode.ZipCode
Get
Return zipCodeText
End Get
Set(ByVal value As String)
zipCodeText = value
End Set
End Property
' This is the callback method that returns the provider.
<ConnectionProvider("Zip Code Provider", "ZipCodeProvider")> _
Public Function ProvideIZipCode() As IZipCode
Return Me
End Function
Protected Overrides Sub CreateChildControls()
Controls.Clear()
input = New TextBox()
Me.Controls.Add(input)
send = New Button()
send.Text = "Enter 5-digit Zip Code"
AddHandler send.Click, AddressOf Me.submit_Click
Me.Controls.Add(send)
End Sub
Private Sub submit_Click(ByVal sender As Object, _
ByVal e As EventArgs)
If input.Text <> String.Empty Then
zipCodeText = Page.Server.HtmlEncode(input.Text)
input.Text = String.Empty
End If
End Sub
End Class
<AspNetHostingPermission(SecurityAction.Demand, _
Level:=AspNetHostingPermissionLevel.Minimal)> _
<AspNetHostingPermission(SecurityAction.InheritanceDemand, _
Level:=AspNetHostingPermissionLevel.Minimal)> _
Public Class WeatherWebPart
Inherits WebPart
Private _provider As IZipCode
Private _zipSearch As String
Private DisplayContent As Label
' This method is identified by the ConnectionConsumer
' attribute, and is the mechanism for connecting with
' the provider.
<ConnectionConsumer("Zip Code Consumer", "ZipCodeConsumer")> _
Public Sub GetIZipCode(ByVal Provider As IZipCode)
_provider = Provider
End Sub
Protected Overrides Sub OnPreRender(ByVal e As EventArgs)
EnsureChildControls()
If Not (Me._provider Is Nothing) Then
_zipSearch = _provider.ZipCode.Trim()
DisplayContent.Text = "My Zip Code is: " + _zipSearch
End If
End Sub
Protected Overrides Sub CreateChildControls()
Controls.Clear()
DisplayContent = New Label()
Me.Controls.Add(DisplayContent)
End Sub
End Class
End Namespace
Bagian ketiga dari contoh kode adalah halaman Web. Di dekat bagian atas adalah Register
arahan untuk kontrol pengguna dan kontrol kustom WebPart . Karena contoh mengasumsikan kompilasi dinamis kontrol, kode sumber untuk kontrol harus berada dalam subfolder App_Code; Register
tag di halaman hanya mereferensikan awalan tag arbitrer dan namespace kontrol. Kontrol kustom WebPart (penyedia dan konsumen) dideklarasikan dalam elemen halaman <asp:webpartzone>
Web, di dalam <zonetemplate>
elemen .
Halaman ini menyediakan tiga cara untuk membentuk koneksi antara kontrol kustom. Metode pertama bersifat deklaratif. Dalam markup untuk halaman, <StaticConnections>
elemen dideklarasikan, dan di dalamnya adalah <asp:WebPartConnections>
elemen , dengan berbagai detail konsumen dan penyedia koneksi yang ditentukan sebagai atribut. Ini adalah salah satu cara untuk membuat koneksi, dengan mendeklarasikannya langsung di halaman Web, khususnya dalam <asp:WebPartManager>
elemen . Karena koneksi statis ini, koneksi antara dua kontrol kustom dibuat segera saat pertama kali halaman dimuat.
Metode kedua untuk membentuk koneksi antara kontrol disediakan oleh <asp:connectionszone>
elemen di halaman. Jika pengguna mengalihkan halaman ke mode tampilan sambungkan pada durasi, dan mengklik kata kerja sambungkan pada salah satu kontrol kustom, <asp:connectionszone>
elemen secara otomatis merender UI untuk membuat koneksi.
Halaman ini juga menunjukkan cara ketiga untuk membuat koneksi, yaitu melakukannya secara terprogram.
Button1_Click
Dalam metode , kode membuat ProviderConnectionPoint objek untuk kontrol penyedia, dan mengambil detail titik koneksinya dengan memanggil GetProviderConnectionPoints metode . Ini melakukan tugas serupa untuk kontrol konsumen, memanggil GetConsumerConnectionPoints metode . Akhirnya, ini membuat objek baru WebPartConnection dengan memanggil ConnectWebParts metode pada WebPartManager kontrol.
<%@ Page Language="C#" %>
<%@ Register TagPrefix="uc1"
TagName="DisplayModeMenuCS"
Src="~/displaymodemenucs.ascx" %>
<%@ 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">
<script runat="server">
protected void Button1_Click(object sender, EventArgs e)
{
ProviderConnectionPoint provPoint =
mgr.GetProviderConnectionPoints(zip1)["ZipCodeProvider"];
ConsumerConnectionPoint connPoint =
mgr.GetConsumerConnectionPoints(weather1)["ZipCodeConsumer"];
WebPartConnection conn1 = mgr.ConnectWebParts(zip1, provPoint,
weather1, connPoint);
}
protected void mgr_DisplayModeChanged(object sender,
WebPartDisplayModeEventArgs e)
{
if (mgr.DisplayMode == WebPartManager.ConnectDisplayMode)
Button1.Visible = true;
else
Button1.Visible = false;
}
</script>
<html xmlns="http://www.w3.org/1999/xhtml" >
<head runat="server">
<title>Untitled Page</title>
</head>
<body>
<form id="form1" runat="server">
<div>
<asp:WebPartManager ID="mgr" runat="server"
OnDisplayModeChanged="mgr_DisplayModeChanged">
<StaticConnections>
<asp:WebPartConnection ID="conn1"
ConsumerConnectionPointID="ZipCodeConsumer"
ConsumerID="weather1"
ProviderConnectionPointID="ZipCodeProvider"
ProviderID="zip1" />
</StaticConnections>
</asp:WebPartManager>
<uc1:DisplayModeMenuCS ID="menu1" runat="server" />
<asp:WebPartZone ID="WebPartZone1" runat="server">
<ZoneTemplate>
<aspSample:ZipCodeWebPart ID="zip1" runat="server"
Title="Zip Code Provider" />
<aspSample:WeatherWebPart ID="weather1" runat="server"
Title="Zip Code Consumer" />
</ZoneTemplate>
</asp:WebPartZone>
<asp:ConnectionsZone ID="ConnectionsZone1" runat="server">
</asp:ConnectionsZone>
<asp:Button ID="Button1" runat="server"
Text="Connect WebPart Controls"
OnClick="Button1_Click"
Visible="false" />
</div>
</form>
</body>
</html>
<%@ Page Language="vb" %>
<%@ Register TagPrefix="uc1"
TagName="DisplayModeMenuVB"
Src="~/displaymodemenuvb.ascx" %>
<%@ Register TagPrefix="aspSample"
Namespace="Samples.AspNet.VB.Controls" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<script runat="server">
Protected Sub Button1_Click(ByVal sender As Object, _
ByVal e As System.EventArgs)
Dim provPoint As ProviderConnectionPoint = _
mgr.GetProviderConnectionPoints(zip1)("ZipCodeProvider")
Dim connPoint As ConsumerConnectionPoint = _
mgr.GetConsumerConnectionPoints(weather1)("ZipCodeConsumer")
mgr.ConnectWebParts(zip1, provPoint, weather1, connPoint)
End Sub
Protected Sub mgr_DisplayModeChanged (ByVal sender as Object, _
ByVal e as WebPartDisplayModeEventArgs)
If mgr.DisplayMode Is WebPartManager.ConnectDisplayMode Then
Button1.Visible = True
Else
Button1.Visible = False
End If
End Sub
</script>
<html xmlns="http://www.w3.org/1999/xhtml" >
<head runat="server">
<title>Untitled Page</title>
</head>
<body>
<form id="form1" runat="server">
<div>
<asp:WebPartManager ID="mgr" runat="server"
OnDisplayModeChanged="mgr_DisplayModeChanged">
<StaticConnections>
<asp:WebPartConnection ID="conn1"
ConsumerConnectionPointID="ZipCodeConsumer"
ConsumerID="weather1"
ProviderConnectionPointID="ZipCodeProvider"
ProviderID="zip1" />
</StaticConnections>
</asp:WebPartManager>
<uc1:DisplayModeMenuVB ID="menu1" runat="server" />
<asp:WebPartZone ID="WebPartZone1" runat="server">
<ZoneTemplate>
<aspSample:ZipCodeWebPart ID="zip1" runat="server"
Title="Zip Code Provider" />
<aspSample:WeatherWebPart ID="weather1" runat="server"
Title="Zip Code Consumer" />
</ZoneTemplate>
</asp:WebPartZone>
<asp:ConnectionsZone ID="ConnectionsZone1" runat="server">
</asp:ConnectionsZone>
<asp:Button ID="Button1" runat="server"
Text="Connect WebPart Controls"
OnClick="Button1_Click"
Visible="false" />
</div>
</form>
</body>
</html>
Setelah Anda memuat halaman Web di browser, koneksi pertama sudah ada karena dinyatakan dalam <StaticConnections>
elemen . Masukkan beberapa teks dalam kontrol Penyedia Kode Pos , dan teks tersebut akan ditampilkan dalam kontrol konsumen. Selanjutnya, putuskan sambungan dua kontrol. Menggunakan kontrol daftar drop-down Mode Tampilan , ubah halaman untuk menyambungkan mode tampilan. Klik menu kata kerja (diwakili oleh panah ke bawah di bilah judul) untuk setiap WebPart kontrol, dan perhatikan bahwa masing-masing memiliki opsi Sambungkan . Ini adalah kata kerja sambungkan, yang muncul di menu kata kerja hanya ketika halaman berada dalam mode sambungkan. Klik kata kerja sambungkan pada salah satu kontrol, dan UI koneksi yang disediakan oleh ConnectionsZone kontrol muncul. Klik tombol Putuskan sambungan untuk mengakhiri koneksi statis di antara kontrol. Gunakan kontrol Mode Tampilan untuk mengembalikan halaman ke mode telusuri. Coba masukkan beberapa teks baru di penyedia lagi, dan perhatikan bahwa karena kontrol terputus, teks gagal diperbarui dalam kontrol konsumen.
Selanjutnya, gunakan metode yang sama seperti di atas untuk mengalihkan halaman ke mode tampilan sambungkan lagi. Klik kata kerja sambungkan pada salah satu kontrol. Klik tautan Buat Koneksi , dan gunakan UI yang disediakan oleh ConnectionsZone kontrol untuk membuat koneksi antar kontrol. Ini adalah metode kedua untuk membuat koneksi. Perhatikan bahwa segera setelah koneksi terbentuk, string terakhir yang Anda masukkan di kontrol penyedia (yang gagal muncul karena kontrol terputus) tiba-tiba muncul di konsumen, karena koneksi telah dibuat ulang. Klik tombol Putuskan sambungan untuk mengakhiri koneksi saat ini yang baru saja Anda buat. Kembalikan halaman ke mode telusuri. Masukkan beberapa teks baru di penyedia untuk menunjukkan bahwa teks tidak diperbarui, dan bahwa kontrol kembali terputus.
Kembalikan halaman untuk menyambungkan mode tampilan. Alih-alih mengklik kata kerja sambungkan, klik tombol Sambungkan Kontrol Bagian Web , yang mengilustrasikan metode ketiga untuk membentuk koneksi. Pendekatan ini menghubungkan kontrol secara terprogram dalam satu langkah sederhana tanpa harus menggunakan ConnectionsZone kontrol. Perhatikan bahwa saat koneksi dibuat, string terakhir yang Anda masukkan di penyedia tiba-tiba muncul di kontrol konsumen.
Keterangan
Dalam kumpulan kontrol Bagian Web, koneksi adalah tautan atau asosiasi antara dua WebPart kontrol (atau server atau pengguna lain) yang memungkinkan mereka berbagi data. Kemampuan untuk berbagi data ini memungkinkan kontrol terhubung digunakan dengan cara yang melebihi fungsionalitas yang ditawarkan oleh kontrol terisolasi. Misalnya, jika satu kontrol menyediakan data kode pos, dan kontrol lain dapat membaca data tersebut dan memberikan informasi cuaca lokal berdasarkan kode pos, maka kemampuan terhubung dari kedua kontrol memberikan nilai lebih bagi pengguna. Untuk memperluas contoh ini, kontrol lain dapat dibuat yang juga menampilkan informasi berdasarkan kode pos, seperti kontrol dengan tautan ke berita lokal, dan semua kontrol ini yang dapat bekerja dengan data kode pos dapat berbagi data dengan kontrol tunggal yang menyediakan kode pos. Pengguna akhir aplikasi Bagian Web dapat membuat dan mengelola koneksi antara semua kontrol yang kompatibel tersebut langsung dari browser Web, menggunakan antarmuka pengguna (UI) koneksi standar yang disediakan oleh ConnectionsZone kontrol, atau menggunakan UI kustom yang disediakan oleh pengembang.
Gambaran umum kelas ini WebPartConnection adalah pernyataan umum dari detail dasar untuk membuat koneksi. Untuk informasi selengkapnya tentang komponen dan persyaratan tertentu yang terlibat dalam membuat koneksi, lihat Gambaran Umum Koneksi Bagian Web, atau lihat kelas referensi dan contoh kode yang disebutkan dalam diskusi berikut ini. Ada beberapa aspek mendasar dari koneksi Bagian Web:
Dua WebPart kontrol. Setiap koneksi Bagian Web terdiri dari dua kontrol. Dimungkinkan bagi kontrol untuk berpartisipasi dalam lebih dari satu koneksi secara bersamaan, tetapi setiap koneksi terdiri dari tepat dua kontrol. Kontrol dapat berasal langsung dari WebPart kelas dasar, atau dapat menjadi kontrol server lain, termasuk kontrol ASP.NET, kontrol server kustom, dan kontrol pengguna. Kontrol yang tidak berasal dari WebPart kelas, jika ditempatkan di zona, secara otomatis dibungkus WebPartZoneBase dengan GenericWebPart objek pada durasi, yang memungkinkan mereka untuk mewarisi dari WebPart kelas dan berfungsi sebagai kontrol run-time WebPart .
Kontrol berada di WebPartZoneBase zona. Kontrol WebPart dan tipe kontrol server lainnya harus berada di WebPartZoneBase zona agar dapat berpartisipasi dalam koneksi Bagian Web (dan sebagian besar fitur Bagian Web lainnya).
Konsumen dan penyedia. Di setiap koneksi Bagian Web ada dua kontrol: penyedia data dan konsumen data. Penyedia menyediakan data kepada konsumen melalui metode panggilan balik tertentu yang mengembalikan data dalam bentuk antarmuka. (Untuk contoh cara membuat dan menentukan metode panggilan balik, lihat bagian Contoh topik ini.) Metode panggilan balik ini dikenal sebagai titik koneksi penyedia. Detail titik koneksi ini (nama "ramah", ID, dan jenis antarmuka yang dikembalikan) terkandung dalam objek yang ProviderConnectionPoint terkait dengan kontrol penyedia. Konsumen menerima data melalui metode tertentu yang dapat menerima instans antarmuka. Metode ini dikenal sebagai titik koneksi konsumen, dan detail titik koneksi (nama, ID, dan jenis antarmuka) terkandung dalam objek yang ConsumerConnectionPoint terkait dengan kontrol konsumen.
Kontrol yang kompatibel atau transformator yang valid. Agar koneksi berfungsi, konsumen dan penyedia harus kompatibel (artinya metode titik koneksi yang ditentukan dapat bekerja dengan jenis antarmuka yang sama), atau harus ada objek yang WebPartTransformer mampu menerjemahkan jenis yang ditawarkan oleh penyedia ke dalam jenis yang dipahami oleh konsumen.
Objek WebPartConnection. Agar koneksi ada, harus ada instans WebPartConnection kelas yang berisi referensi ke kontrol penyedia dan konsumen, bersama dengan detail titik koneksi mereka. Jika penyedia dan konsumen tidak kompatibel dan sebaliknya menggunakan WebPartTransformer objek untuk terhubung, koneksi mereferensikan transformator.
Sarana untuk membangun koneksi. Setelah kontrol konsumen dan penyedia yang kompatibel dirancang dengan benar dengan metode titik koneksi dan ditempatkan di zona, dan objek tersedia, langkah dasar terakhir yang WebPartConnection diperlukan adalah memulai koneksi. Salah satu cara ini dapat terjadi adalah bagi pengguna untuk membuat koneksi melalui UI. Jika Anda menempatkan
<asp:connectionszone>
elemen di halaman, dan komponen lain yang diperlukan untuk koneksi ada di tempat, pada durasi pengguna dapat mengalihkan halaman ke mode tampilan sambungkan, klik kata kerja sambungkan pada menu kata kerja penyedia atau konsumen, dan antarmuka pengguna koneksi (berdasarkan ConnectionsZone kontrol) akan muncul. Melalui UI ini, pengguna dapat memulai koneksi. Cara lain untuk memulai koneksi adalah dengan melakukannya secara terprogram. Dalam kedua kasus, baik melalui UI atau secara terprogram, metode yang mendasar yang memulai koneksi sama. Aplikasi memanggil ConnectWebParts metode (atau ConnectWebParts metode jika menggunakan transformator) pada WebPartManager kontrol, meneruskannya ke penyedia, konsumen, dan objek titik koneksi masing-masing, dan metode mengembalikan WebPartConnection objek.
Kelas WebPartConnection mendefinisikan objek yang merangkum detail penting koneksi antara dua WebPart kontrol. Kelas ini hampir seluruhnya terdiri dari properti yang terkait dengan detail koneksi tertentu. Beberapa properti menyangkut kontrol konsumen dalam koneksi. Properti mereferensikan Consumer kontrol konsumen itu ConsumerID sendiri, dan properti mereferensikan ID konsumen. Objek ConsumerConnectionPoint , yang berisi detail titik koneksi konsumen, dirujuk oleh properti konsumen ConsumerConnectionPoint . Properti ConsumerConnectionPointID mereferensikan ID ConsumerConnectionPoint objek. Semua properti koneksi terkait konsumen ini harus memiliki nilai yang ditetapkan untuk membuat koneksi.
Kelas ini WebPartConnection juga memiliki beberapa properti yang terkait dengan kontrol penyedia dalam koneksi, dan ini sesuai dengan properti untuk konsumen. Properti Provider mereferensikan kontrol penyedia itu sendiri, sementara properti mereferensikan ProviderID ID-nya. Properti ProviderConnectionPoint mereferensikan ProviderConnectionPoint objek, dan ProviderConnectionPointID properti mereferensikan ID titik koneksi penyedia.
Beberapa properti menyangkut status koneksi. Properti IsActive menunjukkan apakah koneksi aktif (saat ini bertukar data) atau tidak aktif (masih tersambung tetapi tidak berbagi data secara aktif). Properti IsShared menunjukkan apakah koneksi adalah bersama (tersedia untuk semua pengguna halaman) atau koneksi khusus pengguna, dan IsStatic properti menunjukkan apakah kontrol statis (dideklarasikan dalam markup halaman dan dengan demikian permanen) atau dinamis (dibuat secara terprogram, yang berarti bahwa kontrol tersebut dapat dihapus).
Konstruktor
WebPartConnection() |
Menginisialisasi instans baru kelas WebPartConnection. |
Properti
Consumer |
WebPart Mendapatkan objek yang bertindak sebagai kontrol konsumen dalam koneksi. |
ConsumerConnectionPoint |
Mendapatkan objek yang berfungsi sebagai titik koneksi untuk kontrol yang bertindak sebagai konsumen dalam koneksi. |
ConsumerConnectionPointID |
Mendapatkan atau mengatur nilai properti pada koneksi yang mereferensikan ID objek yang berfungsi sebagai titik koneksi konsumen untuk koneksi tersebut. |
ConsumerID |
Mendapatkan atau mengatur nilai properti pada koneksi yang mereferensikan ID kontrol yang bertindak sebagai konsumen untuk koneksi tersebut WebPart . |
ID |
Mendapatkan atau mengatur ID WebPartConnection objek. |
IsActive |
Mendapatkan nilai yang menunjukkan apakah WebPartConnection objek saat ini dibuat dan dapat bertukar data antara penyedia dan kontrol konsumennya. |
IsShared |
Mendapatkan nilai yang menunjukkan apakah WebPartConnection objek terlihat oleh semua pengguna atau hanya untuk pengguna saat ini. |
IsStatic |
Mendapatkan nilai yang menunjukkan apakah WebPartConnection objek dideklarasikan dalam markup halaman Web, atau dibuat secara terprogram. |
Provider |
WebPart Mendapatkan kontrol yang bertindak sebagai penyedia dalam koneksi Bagian Web. |
ProviderConnectionPoint |
Mendapatkan objek yang berfungsi sebagai titik koneksi untuk kontrol yang WebPart bertindak sebagai penyedia untuk koneksi. |
ProviderConnectionPointID |
Mendapatkan atau mengatur nilai properti pada koneksi yang mereferensikan ID objek yang berfungsi sebagai titik koneksi penyedia untuk koneksi tersebut. |
ProviderID |
Mendapatkan atau mengatur nilai properti pada koneksi yang mereferensikan ID kontrol yang bertindak sebagai penyedia untuk koneksi tersebut WebPart . |
Transformer |
WebPartTransformer Mendapatkan objek yang digunakan untuk mengubah data antara dua titik koneksi yang tidak kompatibel dalam koneksi Bagian Web. |
Transformers |
Mendapatkan kumpulan WebPartTransformer objek yang digunakan secara internal oleh set kontrol Bagian Web. |
Metode
Equals(Object) |
Menentukan apakah objek yang ditentukan sama dengan objek saat ini. (Diperoleh dari Object) |
GetHashCode() |
Berfungsi sebagai fungsi hash default. (Diperoleh dari Object) |
GetType() |
Mendapatkan dari instans Type saat ini. (Diperoleh dari Object) |
MemberwiseClone() |
Membuat salinan dangkal dari saat ini Object. (Diperoleh dari Object) |
ToString() |
Mengambil alih metode yang diwariskan ToString() dan mengembalikan nama jenis pendek untuk objek koneksi. |