Udostępnij za pośrednictwem


WebPartManager.CreateWebPart(Control) Metoda

Definicja

Opakowuje kontrolkę serwera, która nie WebPart jest kontrolką z obiektem GenericWebPart , dzięki czemu kontrolka może mieć funkcje składników Web Part.

public:
 virtual System::Web::UI::WebControls::WebParts::GenericWebPart ^ CreateWebPart(System::Web::UI::Control ^ control);
public virtual System.Web.UI.WebControls.WebParts.GenericWebPart CreateWebPart (System.Web.UI.Control control);
abstract member CreateWebPart : System.Web.UI.Control -> System.Web.UI.WebControls.WebParts.GenericWebPart
override this.CreateWebPart : System.Web.UI.Control -> System.Web.UI.WebControls.WebParts.GenericWebPart
Public Overridable Function CreateWebPart (control As Control) As GenericWebPart

Parametry

control
Control

Kontrolka serwera, która nie jest kontrolką WebPart .

Zwraca

Element GenericWebPart , który zawija control i umożliwia jej działanie jako prawdziwa WebPart kontrolka.

Przykłady

W poniższym przykładzie kodu pokazano użycie CreateWebPart metody . W metodzie Button2_Click methodmetoda jest wywoływana CreateWebPart w celu opakowania Calendar kontrolki z obiektem GenericWebPart przed dodaniem jej do strefy.

<%@ 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>
<%@ 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 Button2_Click(ByVal sender As Object, _
    ByVal e As System.EventArgs)
    Dim mgr As WebPartManager = WebPartManager1
    Dim cal As New Calendar()
    cal.ID = "cal1"
    Dim calWebPart As GenericWebPart = mgr.CreateWebPart(cal)
    mgr.AddWebPart(calWebPart, WebPartZone1, 1)
  End Sub

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

    If WebPartZone1.WebParts.Count > 1 Then
      Dim cal As WebPart = WebPartZone1.WebParts(1)
      If cal.Controls(0).GetType().Name = "Calendar" AndAlso _
        cal IsNot Nothing Then
        WebPartManager1.DeleteWebPart(cal)
      End If
    End If
  End Sub
</script>

<html xmlns="http://www.w3.org/1999/xhtml" >
<head id="Head1" 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>

Uwagi

Metoda CreateWebPart jest głównym mechanizmem włączania kontrolek serwera, które nie WebPart są kontrolkami do przejmowania tej samej funkcjonalności co kontrolka WebPart , a tym samym do udziału w pełni w aplikacjach składników Web Part. Korzystając z tej metody, deweloperzy znacznie rozszerzają liczbę kontrolek serwera, których mogą używać w aplikacji składników Web Part, ponieważ można użyć praktycznie dowolnego typu kontrolek standardowych ASP.NET serwera, kontrolek użytkownika i kontrolek niestandardowych.

Kontrolka WebPartManager używa również tej metody w dwóch innych scenariuszach do zawijania kontrolek serwera z obiektem GenericWebPart . Gdy użytkownicy dodają kontrolki serwera do strony przy użyciu kontrolki ImportCatalogPart , jeśli zaimportowana kontrolka nie jest kontrolką WebPart , CreateWebPart wywoływana jest metoda . Ponadto, gdy kontrolki serwera są deklarowane w formacie trwałości w WebPartZoneBase strefie na stronie sieci Web, metoda jest wywoływana dla wszystkich kontrolek, CreateWebPart które nie WebPart są kontrolkami.

Gdy dodasz kontrolkę serwera do strefy programowo, typowym podejściem jest użycie CreateWebPart metody do zawijania kontrolki obiektem GenericWebPart , a następnie wywołanie AddWebPart metody w celu dodania kontrolki do kolekcji wszystkich WebPart kontrolek na stronie, do której odwołuje WebParts się właściwość .

Uwagi dotyczące dziedziczenia

Tę metodę można zastąpić, aby użyć klasy pochodnej GenericWebPart zamiast klasy bazowej dostarczonej z zestawem kontrolek składników Web Part.

Dotyczy

Zobacz też