WebPartManager.WebParts 属性

定义

获取对网页上的 WebPart 控件所跟踪的所有 WebPartManager 控件的引用。

public:
 property System::Web::UI::WebControls::WebParts::WebPartCollection ^ WebParts { System::Web::UI::WebControls::WebParts::WebPartCollection ^ get(); };
[System.ComponentModel.Browsable(false)]
public System.Web.UI.WebControls.WebParts.WebPartCollection WebParts { get; }
[<System.ComponentModel.Browsable(false)>]
member this.WebParts : System.Web.UI.WebControls.WebParts.WebPartCollection
Public ReadOnly Property WebParts As WebPartCollection

属性值

WebPartCollection

一个 WebPartCollection,包含对一组 WebPart 控件的引用。

属性

示例

下面的代码示例演示如何以编程方式使用 WebParts 属性来访问单个 WebPart 控件。 请注意,在网页的声明性标记中<asp:webpartzone>,元素中有两个标准 ASP.NET 服务器控件。 尽管这些属性不继承自 WebPart 类,因为它们位于一个区域中,因此它们将在运行时用 GenericWebPart 对象包装,因此将包含在属性引用的 WebParts 集合中。 还可以在此区域中添加自定义 WebPart 控件、用户控件或自定义服务器控件,并且处理方式相同。

<%@ Page Language="C#" %>

<!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)
  {
    Label1.Text = "WebPart count:  " +
      WebPartManager1.WebParts.Count.ToString();
  }

  protected void Button2_Click(object sender, EventArgs e)
  {
    WebPartManager1.WebParts["Calendar1"].ChromeType = 
      PartChromeType.BorderOnly;
  }
</script>

<html xmlns="http://www.w3.org/1999/xhtml" >
<head id="Head1" runat="server">
    <title>ASP.NET Example</title>
</head>
<body>
    <form id="form1" runat="server">
      <!-- Reference the WebPartManager control. -->
    <asp:WebPartManager ID="WebPartManager1" runat="server" />    
    <div>
      <asp:WebPartZone ID="WebPartZone1" runat="server">
        <ZoneTemplate>
          <asp:BulletedList 
            DisplayMode="HyperLink" 
            ID="BulletedList1" 
            runat="server"
            Title="My Links"
            ExportMode="All">
            <asp:ListItem Value="http://www.microsoft.com">
            Microsoft
            </asp:ListItem>
            <asp:ListItem Value="http://www.msn.com">
            MSN
            </asp:ListItem>
            <asp:ListItem Value="http://www.contoso.com">
            Contoso Corp.
            </asp:ListItem>
          </asp:BulletedList>
          <asp:Calendar ID="Calendar1" runat="server" 
            Title="My Calendar" />
        </ZoneTemplate>
      </asp:WebPartZone>
      <hr />
      <asp:Button ID="Button1" runat="server" 
        Text="WebPart Count" 
        OnClick="Button1_Click" />
      <asp:Button ID="Button2" runat="server" 
        Text="Hide Calendar Title" 
        OnClick="Button2_Click" />  
      <br />
      <asp:Label ID="Label1" runat="server" text="" />
    </div>
    </form>
</body>
</html>
<%@ Page Language="vb" %>

<!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)
    
    Label1.Text = "WebPart count:  " & _
      WebPartManager1.WebParts.Count.ToString()
  End Sub

  Protected Sub Button2_Click(ByVal sender As Object, _
    ByVal e As System.EventArgs)
    
    WebPartManager1.WebParts("Calendar1").ChromeType = _
      PartChromeType.BorderOnly

  End Sub
</script>

<html xmlns="http://www.w3.org/1999/xhtml" >
<head id="Head1" runat="server">
    <title>ASP.NET Example</title>
</head>
<body>
    <form id="form1" runat="server">
      <!-- Reference the WebPartManager control. -->
    <asp:WebPartManager ID="WebPartManager1" runat="server" />    
    <div>
      <asp:WebPartZone ID="WebPartZone1" runat="server">
        <ZoneTemplate>
          <asp:BulletedList 
            DisplayMode="HyperLink" 
            ID="BulletedList1" 
            runat="server"
            Title="My Links"
            ExportMode="All">
            <asp:ListItem Value="http://www.microsoft.com">
            Microsoft
            </asp:ListItem>
            <asp:ListItem Value="http://www.msn.com">
            MSN
            </asp:ListItem>
            <asp:ListItem Value="http://www.contoso.com">
            Contoso Corp.
            </asp:ListItem>
          </asp:BulletedList>
          <asp:Calendar ID="Calendar1" runat="server" 
            Title="My Calendar" />
        </ZoneTemplate>
      </asp:WebPartZone>
      <hr />
      <asp:Button ID="Button1" runat="server" 
        Text="WebPart Count" 
        OnClick="Button1_Click" />
      <asp:Button ID="Button2" runat="server" 
        Text="Hide Calendar Title" 
        OnClick="Button2_Click" />  
      <br />
      <asp:Label ID="Label1" runat="server" text="" />
    </div>
    </form>
</body>
</html>

请注意,若要使代码示例正常工作,必须在Web.config文件中添加设置,以启用导出Web 部件说明文件。 请确保在此代码示例的网页所在的目录中有一个Web.config文件。 在该节中<system.web>,请确保有一个<webParts>``enableExport元素,其属性设置为 true,如以下标记所示。

<webParts enableExport="true">

...

</webParts>

将页面加载到浏览器中后,如果单击 “WebPart 计数 ”按钮,代码将使用 WebParts 该属性返回集合中的控件计数。 如果单击“ 隐藏日历标题 ”按钮,代码将更改日历,使其仅呈现边框而不是标题。

注解

WebParts属性由WebPartManager控件用来跟踪页面上区域中包含的WebPartZoneBase所有WebPart控件。 虽然集合是只读的,但可以通过集合访问各个 WebPart 控件,并通过编程方式对这些控件进行更改。

备注

WebPart可以将控件放置在区域外部WebPartZone的页面上,这会导致控件未被WebPartManager控件跟踪或被引用在其WebParts集合中。 但是,几乎没有理由使用WebPart区域外部的控件,因为它随后失去了其Web 部件功能,并充当正常的服务器控件。

可以放置在区域中的任何类型的控件,无论是自定义WebPart控件、标准 ASP.NET 控件、用户控件还是自定义服务器控件,都可以在运行时被视为WebPart控件。 当不是WebPart控件的控件放置在WebPartZone区域中时,在运行时 ASP.NET 用对象包装控件GenericWebPart,以便控件可以充当真正的WebPart控件。 因此,通过使用 WebParts 该属性, WebPartManager 该控件可以跟踪任何类型的服务器控件,而不考虑它是否派生自 WebPart 类。

适用于