如何在页面上动态管理UserControl ....?

时间:2011-12-31 08:06:50

标签: c# asp.net user-controls webusercontrol

我的场景是这样的,

我必须创建一个管理页面(标题部分),我必须从我的下拉列表中选择单个或多个用户控件....

将动态添加到页面中....

我应该怎么做?

目前我的想法是这样的

当某个人从下拉列表中选择并添加一个usercontrol时,我会在textarea中添加usercontrols标签并将其保存在db ...

当调用网站的索引页面时,标题部分将从数据库中呈现并显示..

但我应该如何管理控制标记,该标记应该在index.aspx中放置在页面顶部同时进行渲染?

请知道我在某些时候很难理解,但如果您有任何与我的问题有关的疑问,我会尽力回复

小心

1 个答案:

答案 0 :(得分:1)

如果我正确地得到您的问题,则无需在数据库中存储标签或任何内容。只是控制的名称和路径(记住只能从同一个项目中加载用户控件)。 以下是动态加载用户控件的代码示例。

  <asp:DropDownList ID="userControlSelection" runat="server" AutoPostBack="true"
    onselectedindexchanged="userControlSelection_SelectedIndexChanged">
      <asp:ListItem Value="1">User Control One</asp:ListItem>
      <asp:ListItem Value="2">User Control Two</asp:ListItem>
</asp:DropDownList>
<asp:Panel ID="controlHolder" runat="server" ></asp:Panel>

在代码中,重要部分是“this.LoadControl(”〜/ WebUserControl2.ascx“);”查看本文以获取更多信息并加载用户控件Dynamically creating User Controls

protected void userControlSelection_SelectedIndexChanged(object sender, EventArgs e)
    {
        Control c = null;
        if (userControlSelection.SelectedValue == "1")
        {
            c = this.LoadControl("~/WebUserControl1.ascx");
        }
        else if (userControlSelection.SelectedValue == "2")
        {
            c = this.LoadControl("~/WebUserControl2.ascx");                
        }

        if (c != null)
        {
            controlHolder.Controls.Clear();
            controlHolder.Controls.Add(c);
        }
        else
        {
            //Throw some error
        }

    }

希望这有帮助,谢谢