ProxyWebPartManager Třída

Definice

Poskytuje vývojářům způsob, jak deklarovat statická připojení na stránce obsahu, když WebPartManager byl ovládací prvek deklarován na přidružené stránce předlohy stránky obsahu.

public ref class ProxyWebPartManager : System::Web::UI::Control
[System.ComponentModel.Bindable(false)]
public class ProxyWebPartManager : System.Web.UI.Control
[<System.ComponentModel.Bindable(false)>]
type ProxyWebPartManager = class
    inherit Control
Public Class ProxyWebPartManager
Inherits Control
Dědičnost
ProxyWebPartManager
Atributy

Příklady

Následující příklad kódu ukazuje, jak použít ProxyWebPartManager třídu deklarovat statická připojení na stránkách obsahu v aplikaci, která používá stránky předlohy. Příklad má pět částí:

  • Uživatelský ovládací prvek, který umožňuje změnit režim zobrazení webových částí na stránce.

  • Zdrojový kód pro rozhraní a dva WebPart ovládací prvky, které fungují jako zprostředkovatel a příjemce připojení.

  • Webová stránka předlohy, která je hostitelem uživatelského ovládacího prvku, stránek obsahu a WebPartManager ovládacího prvku aplikace.

  • Obsah webové stránky, která je hostitelem ProxyWebPartManager ovládacího prvku, dvou vlastních WebPart ovládacích prvků a statického připojení pro propojení těchto dvou ovládacích prvků.

  • Vysvětlení, jak spustit ukázkovou stránku

První část tohoto příkladu kódu je uživatelský ovládací prvek, který umožňuje uživatelům změnit režimy zobrazení na webové stránce. Uložte následující zdrojový kód do souboru .ascx a dejte mu název souboru, který je přiřazen atributu SrcRegister direktivy pro tento uživatelský ovládací prvek, který je v blízkosti horní části hostující stránky předlohy. Podrobnosti o režimech zobrazení a popis zdrojového kódu v tomto ovládacím prvku najdete v tématu Návod: Změna režimů zobrazení na stránce webových částí.

<%@ 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="&nbsp;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="&nbsp;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>

Druhá část příkladu kódu je zdrojový kód pro rozhraní a ovládací prvky. Zdrojový soubor obsahuje jednoduché rozhraní s názvem IZipCode. K dispozici je také WebPart třída s názvem ZipCodeWebPart , která implementuje rozhraní a funguje jako ovládací prvek zprostředkovatele. Jeho ProvideIZipCode metoda je metoda zpětného volání, která implementuje jediný člen rozhraní. Metoda jednoduše vrátí instanci rozhraní. Všimněte si, že metoda je v metadatech označená atributem ConnectionProvider . Toto je mechanismus pro identifikaci metody jako metody zpětného volání pro spojovací bod poskytovatele. Druhá WebPart třída má název WeatherWebParta funguje jako příjemce připojení. Tato třída má metodu s názvem GetZipCode , která získá instanci IZipCode rozhraní z ovládacího prvku zprostředkovatele. Všimněte si, že tato metoda je označena jako metoda spojovacího bodu příjemce s atributem ConnectionConsumer v jeho metadatech.

Aby se příklad kódu spustil, musíte tento zdrojový kód zkompilovat. Můžete ho explicitně zkompilovat a vložit výsledné sestavení do složky Bin webu nebo globální mezipaměti sestavení (GPA). Případně můžete zdrojový kód umístit do složky App_Code webu, kde se bude dynamicky kompilovat za běhu. Tento příklad kódu používá dynamickou kompilaci. Návod, který ukazuje, jak kompilovat, najdete v tématu Návod: Vývoj a použití vlastního ovládacího prvku webového serveru.

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

Třetí částí příkladu kódu je stránka předlohy. Měli byste vzít následující zdrojový kód a uložit ho do souboru s názvy MasterPageCS.master nebo MasterPageVB.master (podle toho, který jazyk používáte). Všimněte si, že stránka předlohy obsahuje direktivu Register pro registraci uživatelského ovládacího prvku a odkazuje na samotný uživatelský ovládací prvek v těle stránky. Stránka předlohy také deklaruje jeden <asp:webpartmanager> prvek použitý pro tuto stránku a všechny stránky souvisejícího obsahu. Nakonec má stránka předlohy <asp: contentplaceholder> prvek, který deklaruje bod na stránce, do které je vložena stránka obsahu.

<%@ Master Language="C#" %>
<%@ register tagprefix="uc1" 
    tagname="DisplayModeMenuCS"
    src="~/displaymodemenucs.ascx" %>
    
<!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>Master page with connections in content pages</title>
</head>
<body>
    <h2>Contoso, Ltd.</h2>
    <hr />
    <form id="form1" runat="server">
    <asp:webpartmanager runat="server" id="WebPartManager1" />
    <uc1:displaymodemenucs id="menu1" runat="server" />
    <div>
        <asp:contentplaceholder id="ContentPlaceHolder1" 
          runat="server" />
    </div>
    </form>
</body>
</html>
<%@ Master Language="VB" %>
<%@ register tagprefix="uc1" 
    tagname="DisplayModeMenuVB"
    src="~/displaymodemenuvb.ascx" %>
    
<!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>Master page with connections in content pages</title>
</head>
<body>
    <h2>Contoso, Ltd.</h2>
    <hr />
    <form id="form1" runat="server">
    <asp:webpartmanager runat="server" id="WebPartManager1" />
    <uc1:displaymodemenuvb id="menu1" runat="server" />
    <div>
        <asp:contentplaceholder id="ContentPlaceHolder1" 
          runat="server" />
    </div>
    </form>
</body>
</html>

Čtvrtou částí příkladu kódu je stránka obsahu. Měli byste zkopírovat následující zdrojový kód a uložit ho do souboru s příponou .aspx. Všimněte si, že její Page direktiva MasterFile obsahuje atribut odkazující na stránku předlohy. Tato stránka obsahuje také direktivu Register pro registraci souboru ve složce App_Code, která obsahuje dynamicky kompilované vlastní WebPart ovládací prvky, které se účastní připojení. V rámci <asp:content> značek stránky je <asp:proxywebpartmanager> element s podřízeným <staticconnections> elementem, který má podřízený <asp:webpartconnection> prvek pro deklaraci podrobností připojení. <script> V rámci značek na stránce metoda přidá kód, Button1_Click který přistupuje k hlavnímu WebPartManager ovládacímu prvku na stránce předlohy a k ovládacímu ProxyWebPartManager prvku na stránce obsahu, a zapíše na stránku některé podrobnosti.

<%@ Page Language="C#" MasterPageFile="~/MasterPageCS.master" 
  Title="Connections Page" %>
<%@ Register TagPrefix="aspSample" 
    Namespace="Samples.AspNet.CS.Controls" %>

<script runat="server">

  protected void Button1_Click(object sender, EventArgs e)
  {
    StringBuilder lblText = new StringBuilder();
    
    if (Page.Master.FindControl("WebPartManager1") != null)
    {
      WebPartManager theMgr = 
        (WebPartManager)Page.Master.FindControl("WebPartManager1");
      lblText.Append("WebPartManager:  <br /><pre>" +
        "  Master page file is " + Page.MasterPageFile + "<br />" +
        "  ID is " + theMgr.ID + "<br />" +
        "  Connection count is " +
           theMgr.StaticConnections.Count.ToString() + "<br />" +
        "  WebParts count is " +
           theMgr.WebParts.Count.ToString() + "</pre><br />");
    }

    if (proxymgr1 != null)
    {
      lblText.Append("ProxyWebPartManager:  <br /><pre>" +
        "  Content page file is " + Request.Path + "<br />" +
        "  ID is " + proxymgr1.ID + "<br />" +
        "  Connection count is " +
           proxymgr1.StaticConnections.Count.ToString() + 
           "</pre><br />");
    }

    Literal1.Text = lblText.ToString();
    
  }
  
</script>

<asp:Content ID="Content1" Runat="Server" 
  ContentPlaceHolderID="ContentPlaceHolder1" >
 
  <asp:proxywebpartmanager id="proxymgr1" runat="server">
    <staticconnections>
      <asp:webpartconnection id="connection1" 
        consumerconnectionpointid="ZipCodeConsumer"
        consumerid="zipConsumer"
        providerconnectionpointid="ZipCodeProvider" 
        providerid="zipProvider" />
    </staticconnections>    
  </asp:proxywebpartmanager>

  <div>
  <asp:webpartzone id="zone1" runat="server">
    <zonetemplate>
      <aspsample:zipcodewebpart id="zipProvider" runat="server" 
        title="Zip Code Provider"  />
      <aspsample:weatherwebpart id="zipConsumer" runat="server" 
        title="Zip Code Consumer" />
    </zonetemplate>
  </asp:webpartzone>
  </div>
  
  <div>
  <asp:button id="Button1" runat="server" 
    text="WebPartManager Information" onclick="Button1_Click" />
  <br />
  
  </div>
  
  <asp:connectionszone id="ConnectionsZone1" runat="server" />
  <asp:literal id="Literal1" runat="server" />

</asp:Content>
<%@ Page Language="VB" MasterPageFile="~/MasterPageVB.master" 
  Title="Connections Page" %>
<%@ Register TagPrefix="aspSample" 
    Namespace="Samples.AspNet.VB.Controls" %>

<script runat="server">

  Protected Sub Button1_Click(ByVal sender As Object, _
    ByVal e As EventArgs)

    Dim lblText As StringBuilder = New StringBuilder()

    If Not (Page.Master.FindControl("WebPartManager1") Is Nothing) Then
      Dim theMgr As WebPartManager = _
        CType(Page.Master.FindControl("WebPartManager1"), WebPartManager)
      lblText.Append("WebPartManager:  <br /><pre>" & _
        "  Master page file is " & Page.MasterPageFile & "<br />" & _
        "  ID is " & theMgr.ID & "<br />" & _
        "  Connection count is " & _
           theMgr.StaticConnections.Count.ToString() & "<br />" & _
        "  WebParts count is " & _
           theMgr.WebParts.Count.ToString() & "</pre><br />")
    End If

    If Not (proxymgr1 Is Nothing) Then
      lblText.Append("ProxyWebPartManager:  <br /><pre>" & _
        "  Content page file is " & Request.Path & "<br />" & _
        "  ID is " & proxymgr1.ID & "<br />" & _
        "  Connection count is " & _
           proxymgr1.StaticConnections.Count.ToString() & "</pre><br />")
    End If

    Literal1.Text = lblText.ToString()
    
  End Sub

</script>

<asp:Content ID="Content1" Runat="Server" 
  ContentPlaceHolderID="ContentPlaceHolder1" >

  <asp:proxywebpartmanager id="proxymgr1" runat="server">
    <staticconnections>
      <asp:webpartconnection id="connection1" 
        consumerconnectionpointid="ZipCodeConsumer"
        consumerid="zipConsumer"
        providerconnectionpointid="ZipCodeProvider" 
        providerid="zipProvider" />
    </staticconnections>    
  </asp:proxywebpartmanager>

  <div>
  <asp:webpartzone id="zone1" runat="server">
    <zonetemplate>
      <aspsample:zipcodewebpart id="zipProvider" runat="server" 
        title="Zip Code Provider"  />
      <aspsample:weatherwebpart id="zipConsumer" runat="server" 
        title="Zip Code Consumer" />
    </zonetemplate>
  </asp:webpartzone>
  </div>
  
  <div>
  <asp:button id="Button1" runat="server" 
    text="WebPartManager Information" onclick="Button1_Click" />
  <br />
  <asp:literal id="Literal1" runat="server" />
  </div>
  
  <asp:connectionszone id="ConnectionsZone1" runat="server" />
  
</asp:Content>

Po načtení stránky v prohlížeči klikněte na tlačítko WebPartManager Information a sledujte informace o ovládacím WebPartManager prvku na stránce předlohy a ovládací prvek ProxyWebPartManager na stránce obsahu. Všimněte si například, že oba mají stejný počet ve svých odpovídajících vlastnostech, které sledují statická připojení ( StaticConnections vlastnost ). Všimněte si také, že i když WebPartManagerWebParts ovládací prvek vlastnost, která sleduje počet ovládacích WebPart prvků, které spravuje, ProxyWebPartManager nemá žádnou takovou vlastnost, protože jeho jediným účelem je obsahovat statická připojení.

Poznámky

Ovládací ProxyWebPartManager prvek existuje pro konkrétní scénář deklarování statických připojení na stránkách obsahu, pokud WebPartManager již byl ovládací prvek deklarován na stránce předlohy.

Webová stránka, která používá ovládací prvky webových částí, musí obsahovat jeden (a pouze jeden) WebPartManager ovládací prvek, který spravuje všechny ovládací prvky webových částí na stránce. Pokud aplikace webových částí používá stránky předlohy, je běžné umístit WebPartManager ovládací prvek na stránku předlohy, protože všechny stránky obsahu jsou sloučeny se stránkou předlohy za běhu a jeden WebPartManager ovládací prvek bude spravovat všechny ovládací prvky webových částí ze všech stránek obsahu. Pokud však vývojáři chtějí deklarovat statická připojení na stránkách obsahu takové aplikace, může se zdát, že čelí omezení. Statické připojení webových částí lze deklarovat pouze přidáním elementu <asp:webpartconnection> jako podřízeného <staticconnections> prvku, který sám musí být podřízeným prvkem elementu <asp:webpartmanager> . Ale protože WebPartManager ovládací prvek byl již deklarován na stránce předlohy a je to jeden povolený WebPartManager ovládací prvek, vývojáři nemohou deklarovat další WebPartManager ovládací prvky na stránkách obsahu přidat statická připojení.

Ovládací ProxyWebPartManager prvek v tomto scénáři převezme místo WebPartManager ovládacího prvku. Vývojáři deklarují <asp:proxywebpartmanager> prvek místo elementu <asp:webpartmanager> na svých stránkách obsahu a pak mohou deklarovat statická připojení jako podřízené elementy. Za běhu se připojení v ovládacím ProxyWebPartManager prvku jednoduše přidají do StaticConnections kolekce WebPartManager ovládacího prvku a zpracovávají se stejně jako jakékoli jiné připojení.

Vzhledem k tomu, že ovládací ProxyWebPartManager prvek se používá pouze v tomto konkrétním vývojovém scénáři, má omezenější funkce než WebPartManager třída . Ve skutečnosti, i když ProxyWebPartManager ovládací prvek funguje jako proxy, který obsahuje statická připojení ovládacího prvku na WebPartManager stránkách obsahu, nedědí z WebPartManager ovládacího prvku. Dědí přímo z Control třídy a přepíše pouze několik základních členů. Vlastnosti EnableTheming, Visiblea SkinID jsou přepsány a přiřazeny hodnoty, které brání jejich použití. Ostatní zděděné vlastnosti jsou přepsány, aby se upravilo chování při návrhu, ale jinak mají stejné chování jako základní vlastnosti. Patří mezi ně Controls vlastnosti a ClientID . ProxyWebPartManager Nakonec má třída jednu neděděnou vlastnost. Vlastnost StaticConnections vrací vlastní kolekci statických připojení ( ProxyWebPartConnectionCollection objekt).

Pokud jde o metody, ProxyWebPartManager třída podobně přepisuje pouze několik metod, většinou kvůli omezení jejich použití. Zděděná Focus metoda je nepoužitelná vyvoláním výjimky, pokud je volána. Metoda CreateControlCollection vždy vrátí prázdnou kolekci ovládacích prvků, která brání tomu, aby mohla obsahovat kolekci ovládacích prvků. OnInit Nakonec metoda volá základní metodu a pak přiřadí kolekci připojení odkazovaných StaticConnections vlastností vlastnosti WebPartManager.StaticConnectionsWebPartManager ovládacího prvku. To má za následek postupné uvedení všech statických připojení deklarovaných na všech stránkách obsahu a jejich vytvoření do kolekce připojení udržované ovládacím WebPartManager prvek na stránce předlohy.

Konstruktory

ProxyWebPartManager()

Inicializuje novou instanci ProxyWebPartManager třídy .

Vlastnosti

Adapter

Získá adaptér specifické pro prohlížeč pro ovládací prvek.

(Zděděno od Control)
AppRelativeTemplateSourceDirectory

Získá nebo nastaví aplikaci relativní virtuální adresář nebo UserControl objektuPage, který obsahuje tento ovládací prvek.

(Zděděno od Control)
BindingContainer

Získá ovládací prvek, který obsahuje datové vazby tohoto ovládacího prvku.

(Zděděno od Control)
ChildControlsCreated

Získá hodnotu, která označuje, zda byly vytvořeny podřízené ovládací prvky serverového ovládacího prvku.

(Zděděno od Control)
ClientID

Získá ID ovládacího prvku pro kód HTML, který je generován ASP.NET.

ClientIDMode

Získá nebo nastaví algoritmus, který se používá k vygenerování hodnoty ClientID vlastnosti.

(Zděděno od Control)
ClientIDSeparator

Získá hodnotu znaku představující znak oddělovače použitý ve ClientID vlastnosti .

(Zděděno od Control)
Context

HttpContext Získá objekt přidružený k ovládacímu prvku serveru pro aktuální webový požadavek.

(Zděděno od Control)
Controls

ControlCollection Získá objekt, který představuje podřízené ovládací prvky pro zadaný serverový ovládací prvek v hierarchii uživatelského rozhraní.

DataItemContainer

Získá odkaz na názvový kontejner, pokud názvový kontejner implementuje IDataItemContainer.

(Zděděno od Control)
DataKeysContainer

Získá odkaz na názvový kontejner, pokud názvový kontejner implementuje IDataKeysControl.

(Zděděno od Control)
DesignMode

Získá hodnotu označující, zda je ovládací prvek použit na návrhové ploše.

(Zděděno od Control)
EnableTheming

Přepíše základní vlastnost, aby se zabránilo použití motivů.

EnableViewState

Získá nebo nastaví hodnotu označující, zda serverový ovládací prvek zachová svůj stav zobrazení a stav zobrazení všech podřízených ovládacích prvků, které obsahuje, do žádajícího klienta.

(Zděděno od Control)
Events

Získá seznam delegátů obslužné rutiny události pro ovládací prvek. Tato vlastnost je jen ke čtení.

(Zděděno od Control)
HasChildViewState

Získá hodnotu označující, zda podřízené ovládací prvky aktuálního serveru mají nějaké uložené nastavení stavu zobrazení.

(Zděděno od Control)
ID

Získá nebo nastaví programový identifikátor přiřazený k ovládacímu prvku serveru.

(Zděděno od Control)
IdSeparator

Získá znak použitý k oddělení identifikátorů ovládacích prvků.

(Zděděno od Control)
IsChildControlStateCleared

Získá hodnotu označující, zda ovládací prvky obsažené v tomto ovládacím prvku mají stav řízení.

(Zděděno od Control)
IsTrackingViewState

Získá hodnotu, která označuje, zda serverový ovládací prvek ukládá změny do stavu zobrazení.

(Zděděno od Control)
IsViewStateEnabled

Získá hodnotu označující, zda je stav zobrazení povolen pro tento ovládací prvek.

(Zděděno od Control)
LoadViewStateByID

Získá hodnotu označující, zda se ovládací prvek účastní načítání stavu zobrazení namísto ID indexu.

(Zděděno od Control)
NamingContainer

Získá odkaz na názvový kontejner serverového ovládacího prvku, který vytvoří jedinečný obor názvů pro odlizení mezi ovládacími prvky serveru se stejnou ID hodnotou vlastnosti.

(Zděděno od Control)
Page

Získá odkaz na Page instanci, která obsahuje serverový ovládací prvek.

(Zděděno od Control)
Parent

Získá odkaz na nadřazený ovládací prvek serveru v hierarchii ovládacích prvků stránky.

(Zděděno od Control)
RenderingCompatibility

Získá hodnotu, která určuje ASP.NET verze, která vykreslovala HTML bude kompatibilní s.

(Zděděno od Control)
Site

Získá informace o kontejneru, který je hostitelem aktuálního ovládacího prvku při vykreslení na návrhové ploše.

(Zděděno od Control)
SkinID

Přepíše základní vlastnost, aby se zabránilo přiřazení hodnoty.

StaticConnections

Získá kolekci statických připojení deklarovaných v rámci elementu <asp:proxywebpartmanager> na stránce obsahu.

TemplateControl

Získá nebo nastaví odkaz na šablonu, která obsahuje tento ovládací prvek.

(Zděděno od Control)
TemplateSourceDirectory

Získá virtuální adresář Page nebo UserControl , který obsahuje aktuální serverový ovládací prvek.

(Zděděno od Control)
UniqueID

Získá jedinečný hierarchicky kvalifikovaný identifikátor serverového ovládacího prvku.

(Zděděno od Control)
ValidateRequestMode

Získá nebo nastaví hodnotu, která označuje, zda ovládací prvek kontroluje vstup klienta z prohlížeče pro potenciálně nebezpečné hodnoty.

(Zděděno od Control)
ViewState

Získá slovník informací o stavu, který umožňuje uložit a obnovit stav zobrazení serverového ovládacího prvku napříč více požadavky na stejnou stránku.

(Zděděno od Control)
ViewStateIgnoresCase

Získá hodnotu, která označuje, zda StateBag objekt nerozlišuje malá a velká písmena.

(Zděděno od Control)
ViewStateMode

Získá nebo nastaví režim zobrazení stavu tohoto ovládacího prvku.

(Zděděno od Control)
Visible

Přepíše základní vlastnost, aby se zabránilo přiřazení hodnoty.

Metody

AddedControl(Control, Int32)

Volá se po přidání podřízeného ovládacího prvku do Controls kolekce objektu Control .

(Zděděno od Control)
AddParsedSubObject(Object)

Upozorní ovládací prvek serveru, že byl analyzován element XML nebo HTML, a přidá element do objektu serverového ControlCollection ovládacího prvku.

(Zděděno od Control)
ApplyStyleSheetSkin(Page)

Použije na ovládací prvek vlastnosti stylu definované v šabloně stylů stránky.

(Zděděno od Control)
BeginRenderTracing(TextWriter, Object)

Začíná trasování vykreslovaných dat v době návrhu.

(Zděděno od Control)
BuildProfileTree(String, Boolean)

Shromáždí informace o serverovém ovládacím prvku a předá je vlastnosti Trace , která se má zobrazit, když je pro stránku povoleno trasování.

(Zděděno od Control)
ClearCachedClientID()

Nastaví hodnotu v ClientID mezipaměti na null.

(Zděděno od Control)
ClearChildControlState()

Odstraní informace o stavu ovládacího prvku pro podřízené ovládací prvky serveru.

(Zděděno od Control)
ClearChildState()

Odstraní informace o stavu zobrazení a stavu řízení pro všechny podřízené ovládací prvky serveru.

(Zděděno od Control)
ClearChildViewState()

Odstraní informace o stavu zobrazení pro všechny podřízené ovládací prvky serveru.

(Zděděno od Control)
ClearEffectiveClientIDMode()

ClientIDMode Nastaví vlastnost instance aktuálního ovládacího prvku a všech podřízených ovládacích prvků na Inherit.

(Zděděno od Control)
CreateChildControls()

Volána rozhraním ASP.NET stránky k upozornění serverových ovládacích prvků, které používají implementaci založenou na složení k vytvoření všech podřízených ovládacích prvků, které obsahují při přípravě na zaúčtování zpět nebo vykreslení.

(Zděděno od Control)
CreateControlCollection()

Přepíše základní vlastnost, aby ovládací prvek nemohl ProxyWebPartManager obsahovat ovládací prvky.

DataBind()

Vytvoří vazbu zdroje dat na vyvolaný serverový ovládací prvek a všechny jeho podřízené ovládací prvky.

(Zděděno od Control)
DataBind(Boolean)

Vytvoří vazbu zdroje dat na vyvolaný ovládací prvek serveru a všechny jeho podřízené ovládací prvky s možností vyvolat DataBinding událost.

(Zděděno od Control)
DataBindChildren()

Vytvoří vazbu zdroje dat na podřízené ovládací prvky serveru.

(Zděděno od Control)
Dispose()

Umožňuje ovládacímu prvku serveru provést konečné vyčištění před uvolněním z paměti.

(Zděděno od Control)
EndRenderTracing(TextWriter, Object)

Ukončí trasování doby návrhu vykreslovaných dat.

(Zděděno od Control)
EnsureChildControls()

Určuje, zda serverový ovládací prvek obsahuje podřízené ovládací prvky. Pokud ne, vytvoří podřízené ovládací prvky.

(Zděděno od Control)
EnsureID()

Vytvoří identifikátor pro ovládací prvky, které nemají přiřazený identifikátor.

(Zděděno od Control)
Equals(Object)

Určí, zda se zadaný objekt rovná aktuálnímu objektu.

(Zděděno od Object)
FindControl(String)

Vyhledá v aktuálním názvovém kontejneru serverový ovládací prvek se zadaným id parametrem.

(Zděděno od Control)
FindControl(String, Int32)

Vyhledá v aktuálním kontejneru pojmenování serverový ovládací prvek se zadaným id a celočíselným číslem zadaným v parametru pathOffset , což pomáhá při hledání. Tuto verzi metody byste neměli FindControl přepsat.

(Zděděno od Control)
Focus()

Přepíše základní metodu, aby se zabránilo zavolání metody.

GetDesignModeState()

Získá data v době návrhu pro ovládací prvek.

(Zděděno od Control)
GetHashCode()

Slouží jako výchozí hashovací funkce.

(Zděděno od Object)
GetRouteUrl(Object)

Získá adresu URL, která odpovídá sadě parametrů trasy.

(Zděděno od Control)
GetRouteUrl(RouteValueDictionary)

Získá adresu URL, která odpovídá sadě parametrů trasy.

(Zděděno od Control)
GetRouteUrl(String, Object)

Získá adresu URL, která odpovídá sadě parametrů trasy a název trasy.

(Zděděno od Control)
GetRouteUrl(String, RouteValueDictionary)

Získá adresu URL, která odpovídá sadě parametrů trasy a název trasy.

(Zděděno od Control)
GetType()

Type Získá z aktuální instance.

(Zděděno od Object)
GetUniqueIDRelativeTo(Control)

Vrátí část UniqueID vlastnosti zadaného ovládacího prvku s předponou.

(Zděděno od Control)
HasControls()

Určuje, zda serverový ovládací prvek obsahuje nějaké podřízené ovládací prvky.

(Zděděno od Control)
HasEvents()

Vrátí hodnotu označující, zda jsou události registrovány pro ovládací prvek nebo jakékoli podřízené ovládací prvky.

(Zděděno od Control)
IsLiteralContent()

Určuje, zda serverový ovládací prvek obsahuje pouze obsah literálu.

(Zděděno od Control)
LoadControlState(Object)

Obnoví informace o stavu řízení z předchozího požadavku stránky, který byl uložen metodou SaveControlState() .

(Zděděno od Control)
LoadViewState(Object)

Obnoví informace o stavu zobrazení z předchozího požadavku stránky, který byl uložen metodou SaveViewState() .

(Zděděno od Control)
MapPathSecure(String)

Načte fyzickou cestu, na kterou se mapuje virtuální cesta, absolutní nebo relativní.

(Zděděno od Control)
MemberwiseClone()

Vytvoří mělkou kopii aktuálního Objectsouboru .

(Zděděno od Object)
OnBubbleEvent(Object, EventArgs)

Určuje, zda je událost serverového ovládacího prvku předána hierarchii serveru uživatelského rozhraní stránky.

(Zděděno od Control)
OnDataBinding(EventArgs)

DataBinding Vyvolá událost.

(Zděděno od Control)
OnInit(EventArgs)

Init Vyvolá událost a inicializuje ovládací prvek.

OnLoad(EventArgs)

Load Vyvolá událost.

(Zděděno od Control)
OnPreRender(EventArgs)

PreRender Vyvolá událost.

(Zděděno od Control)
OnUnload(EventArgs)

Unload Vyvolá událost.

(Zděděno od Control)
OpenFile(String)

Stream Získá používá ke čtení souboru.

(Zděděno od Control)
RaiseBubbleEvent(Object, EventArgs)

Přiřadí všechny zdroje události a její informace nadřazené ovládacímu prvku.

(Zděděno od Control)
RemovedControl(Control)

Volá se po odebrání podřízeného ovládacího prvku z Controls kolekce objektu Control .

(Zděděno od Control)
Render(HtmlTextWriter)

Odesílá obsah řízení serveru do zadaného HtmlTextWriter objektu, který zapisuje obsah, který se má vykreslit na klientovi.

(Zděděno od Control)
RenderChildren(HtmlTextWriter)

Vypíše obsah podřízených položek serverového ovládacího prvku do zadaného HtmlTextWriter objektu, který zapíše obsah, který se má vykreslit na klientovi.

(Zděděno od Control)
RenderControl(HtmlTextWriter)

Vypíše obsah ovládacího prvku serveru do zadaného HtmlTextWriter objektu a uloží informace o trasování ovládacího prvku, pokud je trasování povoleno.

(Zděděno od Control)
RenderControl(HtmlTextWriter, ControlAdapter)

Vypíše obsah řízení serveru do zadaného HtmlTextWriter objektu pomocí zadaného ControlAdapter objektu.

(Zděděno od Control)
ResolveAdapter()

Získá adaptér ovládacího prvku zodpovědný za vykreslení zadaného ovládacího prvku.

(Zděděno od Control)
ResolveClientUrl(String)

Získá adresu URL, kterou lze použít v prohlížeči.

(Zděděno od Control)
ResolveUrl(String)

Převede adresu URL na adresu URL, která je použitelná v žádajícím klientovi.

(Zděděno od Control)
SaveControlState()

Uloží všechny změny stavu ovládacích prvků serveru, ke kterým došlo od okamžiku, kdy byla stránka odeslána zpět na server.

(Zděděno od Control)
SaveViewState()

Uloží všechny změny stavu zobrazení ovládacích prvků serveru, ke kterým došlo od okamžiku, kdy byla stránka odeslána zpět na server.

(Zděděno od Control)
SetDesignModeState(IDictionary)

Nastaví data v době návrhu ovládacího prvku.

(Zděděno od Control)
SetRenderMethodDelegate(RenderMethod)

Přiřadí delegáta obslužné rutiny události pro vykreslení serverového ovládacího prvku a jeho obsahu do nadřazeného ovládacího prvku.

(Zděděno od Control)
SetTraceData(Object, Object)

Nastaví trasovací data pro trasování vykreslovaných dat v době návrhu pomocí datového klíče trasování a hodnoty dat trasování.

(Zděděno od Control)
SetTraceData(Object, Object, Object)

Nastaví trasovací data pro trasování vykreslovaných dat v době návrhu pomocí trasovaného objektu, datového klíče trasování a hodnoty dat trasování.

(Zděděno od Control)
ToString()

Vrátí řetězec, který představuje aktuální objekt.

(Zděděno od Object)
TrackViewState()

Způsobí sledování změn stavu zobrazení v ovládacím prvku serveru, aby mohly být uloženy v objektu ovládacího prvku StateBag serveru. Tento objekt je přístupný prostřednictvím ViewState vlastnosti .

(Zděděno od Control)

Událost

DataBinding

Vyvolá se při vytvoření vazby serverového ovládacího prvku na zdroj dat.

(Zděděno od Control)
Disposed

Vyvolá se při uvolnění serverového ovládacího prvku z paměti, což je poslední fáze životního cyklu řízení serveru, když je požadována ASP.NET stránka.

(Zděděno od Control)
Init

Vyvolá se při inicializaci serverového ovládacího prvku, což je první krok v jeho životním cyklu.

(Zděděno od Control)
Load

Vyvolá se při načtení serverového ovládacího prvku do objektu Page .

(Zděděno od Control)
PreRender

Vyvolá se po načtení objektu Control , ale před vykreslením.

(Zděděno od Control)
Unload

Vyvolá se při uvolnění serverového ovládacího prvku z paměti.

(Zděděno od Control)

Explicitní implementace rozhraní

IControlBuilderAccessor.ControlBuilder

Popis tohoto člena najdete v tématu ControlBuilder.

(Zděděno od Control)
IControlDesignerAccessor.GetDesignModeState()

Popis tohoto člena najdete v tématu GetDesignModeState().

(Zděděno od Control)
IControlDesignerAccessor.SetDesignModeState(IDictionary)

Popis tohoto člena najdete v tématu SetDesignModeState(IDictionary).

(Zděděno od Control)
IControlDesignerAccessor.SetOwnerControl(Control)

Popis tohoto člena najdete v tématu SetOwnerControl(Control).

(Zděděno od Control)
IControlDesignerAccessor.UserData

Popis tohoto člena najdete v tématu UserData.

(Zděděno od Control)
IDataBindingsAccessor.DataBindings

Popis tohoto člena najdete v tématu DataBindings.

(Zděděno od Control)
IDataBindingsAccessor.HasDataBindings

Popis tohoto člena najdete v tématu HasDataBindings.

(Zděděno od Control)
IExpressionsAccessor.Expressions

Popis tohoto člena najdete v tématu Expressions.

(Zděděno od Control)
IExpressionsAccessor.HasExpressions

Popis tohoto člena najdete v tématu HasExpressions.

(Zděděno od Control)
IParserAccessor.AddParsedSubObject(Object)

Popis tohoto člena najdete v tématu AddParsedSubObject(Object).

(Zděděno od Control)

Metody rozšíření

FindDataSourceControl(Control)

Vrátí zdroj dat přidružený k ovládacímu prvku dat pro zadaný ovládací prvek.

FindFieldTemplate(Control, String)

Vrátí šablonu pole pro zadaný sloupec v kontejneru názvů zadaného ovládacího prvku.

FindMetaTable(Control)

Vrátí objekt metatable pro ovládací prvek obsahující data.

Platí pro

Viz také