如何创建可重用的webpart(作为用户控件并将其添加到工具箱中)

时间:2014-06-02 11:28:19

标签: web-parts

我想创建一个基本的webpart类(它应该具有在此.cs文件中创建的文本框和标签等控件,这些控件继承自webpart)。在我的aspx页面中,我创建了一个webpart管理器和一个webpart区域。现在我想使用我在2个aspx页面中创建的这个webpart来演示webparts的可重用性

这是我的代码

namespace PartsControl
{
public class AddrPart : WebPart
{
    public AddrPart()
    {
    }

    protected override void CreateChildControls()
    { 
        base.CreateChildControls();
        _divPanel.ID = "_divPanel";
        _divPanel.BorderStyle = BorderStyle.Ridge;
        _divPanel.Width = 250;
        _divPanel.Height = 300;
        _divPanel.BackColor = System.Drawing.Color.Gainsboro;
        Controls.Add(_divPanel);
    }

    protected override void OnPreRender(EventArgs e)
    { 
    }

    protected override void Render(HtmlTextWriter writer)
    {
        base.RenderControl(writer);
        writer.Write("        <div id='_divPanel'>");
        writer.Write("            <table style='border-right: 1px ridge; border-top: 1px ridge; border-left: 1px ridge;");
        writer.Write("                border-bottom: 1px ridge; background-color: gainsboro;' cellpadding='3' cellspacing='2'");
        writer.Write("                width='250'>");
        if (_sErrDescription == "")
        {
            // dropdownlist State
            writer.Write("                <tr style='border-right: 1px ridge; border-top: 1px ridge; border-left: 1px ridge;");
            writer.Write("                    border-bottom: 1px ridge;'>");
            writer.Write("                    <td style='height: 50px'>");
            _ddlCountry.RenderControl(writer);
            writer.Write("                    </td>");
            writer.Write("                </tr>");
    }
}

aspx页面:

<body>
<form id="form1" runat="server">

<asp:WebPartManager ID="WebPartManager1" runat="server">
<Personalization Enabled="false" />
</asp:WebPartManager>
<asp:WebPartZone ID="WebPartZone1" runat="server" Width = "100%">

//在这里添加webpart         

我想在aspx页面中添加我的webpart作为控件。 我的查询是如何将我的webpart类作为控件,以便我可以在aspx页面中重用它

1 个答案:

答案 0 :(得分:0)

编译您的WebPart并将.dll文件放在Web项目的bin文件夹中 然后你必须修改你的aspx页面才能注册webpart。 这是一个示例.aspx页面,允许您添加webpart。
替换WEBPARTDLLNAME,NAMESPACE和CLASSNAME。
当您第一次启动网页时,页面为空。单击目录并将webpart添加到您的webpartzone。

<%@ Page Language="C#" %>
<%@ Register Assembly="WEBPARTDLLNAME" Namespace="NAMESPACE" TagPrefix="cc1" %>
<!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 Edit_Click(object sender, EventArgs e)
    {
        if (WebPartManager1.Personalization.Scope == PersonalizationScope.User)
        {
            WebPartManager1.Personalization.ToggleScope();
        } 
        WebPartManager1.DisplayMode = WebPartManager.EditDisplayMode;
    }

    protected void Connection_Click(object sender, EventArgs e)
    {
        if (WebPartManager1.Personalization.Scope == PersonalizationScope.User)
        {
            WebPartManager1.Personalization.ToggleScope();
        } 
        WebPartManager1.DisplayMode = WebPartManager.ConnectDisplayMode;
    }

    protected void Catalog_Click(object sender, EventArgs e)
    {
        if (WebPartManager1.Personalization.Scope == PersonalizationScope.User)
        {
            WebPartManager1.Personalization.ToggleScope();
        } 
        WebPartManager1.DisplayMode = WebPartManager.CatalogDisplayMode;
    }

    protected void Browse_Click(object sender, EventArgs e)
    {
        if (WebPartManager1.Personalization.Scope == PersonalizationScope.User)
        {
            WebPartManager1.Personalization.ToggleScope();
        } 
        WebPartManager1.DisplayMode = WebPartManager.BrowseDisplayMode;
    }
</script>
<html xmlns="http://www.w3.org/1999/xhtml" >
<head id="Head1" runat="server">
    <meta charset="utf-8" />
    <meta http-equiv="X-UA-Compatible" content="IE=edge" />
    <title>WebPart</title>
</head>
<body>
    <form id="form1" runat="server" >
        <div >
            <asp:WebPartManager Personalization-InitialScope="Shared" ID="WebPartManager1" runat="server"></asp:WebPartManager>

            <asp:WebPartZone ID="WebPartZone1" runat="server"  >
            </asp:WebPartZone>

            <div id="configuratinDIV">    
                <asp:CatalogZone ID="CatalogZone1" runat="server" >
                   <ZoneTemplate>
                      <asp:DeclarativeCatalogPart
                         ID="DeclarativeCatalogPart1" runat="server">
                         <WebPartsTemplate>
                            <cc1:CLASSNAME ID="WebPart1"
                                runat="server" Title="WebPart"></cc1:CLASSNAME>
                         </WebPartsTemplate>
                      </asp:DeclarativeCatalogPart>
                      <asp:PageCatalogPart ID="PageCatalogPart1"
                         runat="server"></asp:PageCatalogPart>
                   </ZoneTemplate>
                </asp:CatalogZone>
                <br />

                <asp:EditorZone ID="EditorZone1" runat="server" >
                   <ZoneTemplate>
                      <asp:PropertyGridEditorPart
                         ID="PropertyGridEditorPart1" runat="server" />
                   </ZoneTemplate>
                </asp:EditorZone>
                <br />

                <asp:ConnectionsZone ID="ConnectionsZone1" runat="server" >
                </asp:ConnectionsZone>
            </div>
        </div>
        <div class="editor">
            <asp:LinkButton ID="LinkButton1" runat="server" OnClick="Edit_Click" style="position: static;">Edit</asp:LinkButton> &nbsp;|&nbsp;
            <asp:LinkButton ID="LinkButton2" runat="server" OnClick="Connection_Click" style="position: static;">Connections</asp:LinkButton> &nbsp;|&nbsp;
            <asp:LinkButton ID="LinkButton3" runat="server" OnClick="Catalog_Click" style=" position: static">Catalog</asp:LinkButton> &nbsp; |&nbsp;
            <asp:LinkButton ID="LinkButton4" runat="server" OnClick="Browse_Click" style="position: static;">Browse</asp:LinkButton>
        </div>
    </form>
</body>
</html>