WebPartManager.GetGenericWebPart Method (Control)


Gets a reference to the instance of the GenericWebPart control that contains a server control.

Namespace:   System.Web.UI.WebControls.WebParts
Assembly:  System.Web (in System.Web.dll)

public GenericWebPart GetGenericWebPart(
	Control control


Type: System.Web.UI.Control

A server control that exists in a WebPartZoneBase and is wrapped as a child control of a GenericWebPart at run time.

Return Value

Type: System.Web.UI.WebControls.WebParts.GenericWebPart

A GenericWebPart that wraps control as a child control. The method returns null if control is not contained in a GenericWebPart.

Exception Condition

control is null.

In general, there are two categories of controls that developers place in WebPartZoneBase zones to participate in Web Parts applications: WebPart controls, which inherit from the WebPart base class, and other server controls, which can be standard ASP.NET controls, custom controls, or user controls. When any of these controls is placed in a WebPartZoneBase zone, it takes on the functionality of a WebPart control. A WebPart control has this functionality inherently, but the other kinds of server controls do not. To enable the other server controls to act as WebPart controls when they are placed in a WebPartZoneBase zone, ASP.NET wraps them with a GenericWebPart control. Because the GenericWebPart control inherits directly from the WebPart class, it provides its child controls with true Web Parts features.

Often at run time, page developers might want to get a reference to the GenericWebPart control that contains one of the server controls in a zone. The GetGenericWebPart method enables them to retrieve a reference to the GenericWebPart control.

The following code example demonstrates the use of the GetGenericWebPart method. The code example contains a Calendar control declared within a WebPartZone zone. The Button1_Click method first prints the ID of the Calendar control to a label, and then uses the GetGenericWebPart method to retrieve a reference to the GenericWebPart control that wraps the calendar. The ID of the GenericWebPart control, and the ID of its child control (which is the Calendar control), are both printed to a second label.

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

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
<script runat="server">

  protected void Button1_Click(object sender, EventArgs e)
    Label1.Text = "<h2>Server Control</h2>";
    Label1.Text += "Server Control ID:  " + Calendar1.ID;
    Label2.Text = "<h2>GenericWebPart Control</h2>";
    GenericWebPart part = mgr.GetGenericWebPart(Calendar1);
    if (part != null)
      Label2.Text +=
        "GenericWebPart ID:  " + part.ID + "<br />";
      Label2.Text +=
        "Underlying Control ID: " + part.ChildControl.ID;


<html xmlns="http://www.w3.org/1999/xhtml" >
<head runat="server">
    <title>Untitled Page</title>
    <form id="form1" runat="server">
      <asp:WebPartManager ID="mgr" runat="server" />
      <asp:WebPartZone ID="WebPartZone1" runat="server">
          <asp:Calendar ID="Calendar1" runat="server"
            Title="My Calendar" />
      <asp:Button ID="Button1" runat="server" 
        Text="Get GenericWebPart"
        OnClick="Button1_Click" />
      <hr />
      <asp:Label ID="Label1" runat="server" Text="" />
      <br />
      <asp:Label ID="Label2" runat="server" Text="" />

.NET Framework
Available since 2.0
Return to top