WebPartManager.DisconnectWebPart(WebPart) Yöntem
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.
Kapatılmakta olan veya katıldığı tüm bağlantılardan silinen veya WebPart sunucu denetimini kaldırır.
protected:
virtual void DisconnectWebPart(System::Web::UI::WebControls::WebParts::WebPart ^ webPart);
protected virtual void DisconnectWebPart (System.Web.UI.WebControls.WebParts.WebPart webPart);
abstract member DisconnectWebPart : System.Web.UI.WebControls.WebParts.WebPart -> unit
override this.DisconnectWebPart : System.Web.UI.WebControls.WebParts.WebPart -> unit
Protected Overridable Sub DisconnectWebPart (webPart As WebPart)
Parametreler
Örnekler
Aşağıdaki kod örneğinde yönteminin nasıl kullanılacağı gösterilmektedir DisconnectWebPart . İki özel WebPart denetim kullanan Web sayfası, bir düğmeye tıklayarak denetimler arasında bağlantı oluşturmanıza olanak tanırken, başka bir düğme denetimlerin bağlantısını kesmenize olanak tanır. Sayfa göz atma modundayken denetimlerden birini kapatırsanız ve denetimler bağlıysa, yöntemin DisconnectWebPart geçersiz kılması kapalı denetimin bağlantısını keser, bağlantıyı sonlandırır ve bir ileti görüntüler.
Kod örneğinin dört bölümü vardır:
Görüntü modlarını değiştirmek için bir kullanıcı denetimi.
Özel WebPart denetimler içeren bir kaynak dosya.
Denetimleri barındırmak için bir Web sayfası.
Örneğin tarayıcıda nasıl çalıştığını gösteren açıklama.
Kod örneğinin ilk bölümü, görüntüleme modlarını değiştirmeye yönelik kullanıcı denetimidir. Kullanıcı denetimi için kaynak kodunu sınıfa genel bakışın Örnek bölümünden WebPartManager alabilirsiniz. Görüntüleme modları ve kullanıcı denetiminin nasıl çalıştığı hakkında daha fazla bilgi için bkz . İzlenecek Yol: Web Bölümleri Sayfasında Görüntü Modlarını Değiştirme.
İkinci bölüm, bağlanacak iki özel WebPart denetimin kaynak kodunu ve özel WebPartManager bir denetimi içeren dosyadır. Kod örneğinin çalışması için bu kaynak kodunu derlemeniz gerekir. Bunu açıkça derleyebilir ve sonuçta elde edilen derlemeyi Web sitenizin Bin klasörüne veya genel derleme önbelleğine yerleştirebilirsiniz. Alternatif olarak, kaynak kodu sitenizin App_Code klasörüne koyabilirsiniz; burada çalışma zamanında dinamik olarak derlenir. Bu örnekte dinamik derleme kullanılır, bu nedenle Register
Web sayfasındaki bu bileşenlere başvuran yönerge, Web sayfasının en üstünde uygun şekilde bildirilir. Derleme seçeneklerini gösteren bir izlenecek yol için bkz. İzlenecek yol: Özel Web Sunucusu Denetimi Geliştirme ve Kullanma.
Kaynak kodunda, yöntemini geçersiz kılan devralınan denetime MyWebPartManager
DisconnectWebPart dikkat edin. Bu yöntem, kapatılan denetimin bağlantıya katılıp katılmadığını görmek için sayfadaki her bağlantıyı denetler ve varsa bağlantıyı sonlandırmak için yöntemini çağırır DisconnectWebParts . Bu, denetimdeki yönteminin temel uygulamasıyla WebPartManager aynıdır. Geçersiz kılınan yöntem daha sonra sayfaya bir ileti yazarak temel uygulamayı özelleştirir.
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", "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", "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", "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", "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
Kod örneğinin üçüncü bölümü Web sayfasıdır. Üst kısımda, kullanıcı denetimini kaydetme yönergelerini ve denetimlerle dinamik olarak derlenmiş derlemeyi içerdiğine Register
WebPart dikkat edin. Sayfada iki birincil yöntem vardır.
Button1_Click
yöntemi denetimler arasında bir bağlantı oluştururken Button2_Click
yöntemi denetimlerin bağlantısını keser.
<%@ 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 Button2_Click(object sender, EventArgs e)
{
if (mgr.Connections.Count >= 1 && mgr.Connections[0] != null)
mgr.DisconnectWebParts(mgr.Connections[0]);
}
</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">
</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" />
<asp:Button ID="Button2" runat="server"
Text="Disconnect WebPart Controls"
OnClick="Button2_Click" />
</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 mgr As WebPartManager = _
WebPartManager.GetCurrentWebPartManager(Page)
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 Button2_Click(ByVal sender as Object, _
ByVal e as System.EventArgs)
If mgr.Connections.Count >= 1 AndAlso _
mgr.Connections(0) IsNot Nothing Then
mgr.DisconnectWebParts(mgr.Connections(0))
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">
</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" />
<asp:Button ID="Button2" runat="server"
Text="Disconnect WebPart Controls"
OnClick="Button2_Click" />
</div>
</form>
</body>
</html>
Sayfayı yükledikten sonra bağlan düğmesine tıklayarak denetimleri bağlayın. Ardından denetimlerden birinde fiiller menüsüne tıklayın (denetimin üst bilgisindeki aşağı ok) ve fiiller menüsünden Kapat'ı seçin. Denetimi kapatmaya çalıştığınızda geçersiz kılınan yöntem çağrılır, bağlantı sonlandırılır ve ileti sayfaya yazılır. Kapalı denetimi geri yüklemek ve diğer seçeneklerle deneme yapmak için sayfayı sıfırlamak istiyorsanız, kişiselleştirme verilerini kaldırmak ve sayfanın özgün durumunu geri yüklemek için Kullanıcı Durumunu Sıfırla bağlantısına tıklayın.
Açıklamalar
Bir DisconnectWebPart denetim bir sayfada kapatıldığında veya bir sayfadan silindiğinde yöntemi Web Bölümleri denetim kümesi tarafından dahili olarak çağrılır. Böyle bir senaryoda, tüketici veya sağlayıcı olarak dahil olduğu tüm bağlantılardan denetimi kaldırmak için yöntemi çağrılır. Denetim herhangi bir bağlantıdan kaldırılırsa, bu yöntem dahil olan webPart
bağlantıları sonlandırmak için yöntemini de çağırırDisconnectWebParts.
DisconnectWebPart yöntemi çağrıldığında olayı tetiklerWebPartsDisconnecting. Normalde bu olay iptal edilebilir, ancak iki durumda iptal edilemez. Yöntem çağrıldığında ActivateConnections sayfaya yapılan istekler sırasında bir durum oluşur. Mevcut bağlantılar arasında bir çakışma varsa, DisconnectWebPart çakışan bağlantılardan birini kapatmak için yöntemi çağrılır ve çakışmanın çözülmesi gerektiğinden WebPartsDisconnecting bu örnekte olay iptal edilemez.
Diğer durum, o anda bağlı olan bir WebPart veya sunucu denetimi kapatıldığında veya silindiğinde oluşur. Bu durumda, denetim sayfadan kaldırıldığından, bağlantısının da sonlandırılması gerekir, bu nedenle tasarım gereği bağlantıyı sonlandırma işlemini kesintiye uğratmak için olayı iptal WebPartsDisconnecting etmek mümkün değildir. Daha fazla bilgi için olaya bakın WebPartsDisconnecting .