Export (0) Print
Expand All
Expand Minimize

WebPartManager.CreateWebPart Method

Wraps a server control that is not a WebPart control with a GenericWebPart object, so that the control can have Web Parts functionality.

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

public virtual GenericWebPart CreateWebPart(
	Control control
)

Parameters

control
Type: System.Web.UI.Control

A server control that is not a WebPart control.

Return Value

Type: System.Web.UI.WebControls.WebParts.GenericWebPart
A GenericWebPart that wraps control and enables it to function as a true WebPart control.

The CreateWebPart method is the main mechanism for enabling server controls that are not WebPart controls to take on the same functionality as a WebPart control, and thus to participate fully in Web Parts applications. By using this method, developers vastly expand the number of server controls that they can use in a Web Parts application, because virtually any type of server control--standard ASP.NET controls, user controls, and custom controls--can be used.

The WebPartManager control also uses this method in two other scenarios to wrap server controls with a GenericWebPart object. When users add server controls to a page by using the ImportCatalogPart control, if the imported control is not a WebPart control, the CreateWebPart method is called. Also, when server controls are declared in persistence format within a WebPartZoneBase zone on a Web page, the CreateWebPart method is called for any controls that are not WebPart controls.

When you add a server control to a zone programmatically, a typical approach is to use the CreateWebPart method to wrap the control with a GenericWebPart object, and then call the AddWebPart method to add the control to the collection of all WebPart controls on the page, which is referenced by the WebParts property.

Notes to Inheritors

This method can be overridden to use a derived GenericWebPart class instead of the base class provided with the Web Parts control set.

The following code example demonstrates use of the CreateWebPart method. In the Button2_Click method, the CreateWebPart method is called to wrap a Calendar control with a GenericWebPart object before adding it to the zone.

<%@ 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 Button2_Click(object sender, EventArgs e)
  {
    WebPartManager mgr = WebPartManager1;
    Calendar cal = new Calendar();
    cal.ID = "cal1";
    GenericWebPart calWebPart = mgr.CreateWebPart(cal);
    mgr.AddWebPart(calWebPart, WebPartZone1, 1);
  }

  protected void Button1_Click(object sender, EventArgs e)
  {
    if (WebPartZone1.WebParts.Count > 1)
    {
      WebPart cal = WebPartZone1.WebParts[1];
      if (cal.Controls[0].GetType().Name == "Calendar" 
        && cal != null)
        WebPartManager1.DeleteWebPart(cal);
    }

  }
</script>

<html xmlns="http://www.w3.org/1999/xhtml" >
<head runat="server">
    <title>Adding a Server Control</title>
</head>
<body>
    <form id="form1" runat="server">
    <div>
      <asp:WebPartManager ID="WebPartManager1" 
        runat="server" />
      <asp:WebPartZone ID="WebPartZone1" runat="server">
        <ZoneTemplate>
          <asp:BulletedList  
            DisplayMode="HyperLink" 
            ID="BulletedList1" 
            runat="server"
            Title="My Links">
            <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>
        </ZoneTemplate>
      </asp:WebPartZone>
      <asp:Button ID="Button1" runat="server" 
        Text="Delete Calendar" 
        OnClick="Button1_Click" />
      <asp:Button ID="Button2" runat="server" 
        Text="Add Calendar" 
        OnClick="Button2_Click" />
    </div>
    </form>
</body>
</html>

.NET Framework

Supported in: 4.6, 4.5, 4, 3.5, 3.0, 2.0
Show:
© 2015 Microsoft