如何在asp.net中运行时添加新面板

时间:2009-08-28 20:56:28

标签: c# asp.net

我正在开发一个asp.net Web应用程序,我在项目中预定义了面板 CSS。现在我想在运行时多次创建具有相同设计和CSS的另一个面板。我有一个按钮控件,当我点击该按钮时,它将添加另一个面板。

请帮我添加另一个符合相同条件的面板。

3 个答案:

答案 0 :(得分:4)

如果您计划重复使用,我建议您使用用户控件。您只需在页面上添加控件的新实例即可。

值得关注的一些事情:

  1. http://aspnet.4guysfromrolla.com/articles/081402-1.aspx
  2. http://aspalliance.com/565
  3. http://msdn.microsoft.com/en-us/library/c0az2h86.aspx
  4. 如果您想通过回发到页面来完成此操作,请将其添加到您的活动中......

    //MyControl = Custom User Control
    var myControl =  (MyControl) Page.LoadControl("MyControl.ascx"); 
    this.ControlContainer.Controls.Add(myControl);
    

答案 1 :(得分:1)

像RSolberg所说,你可以写一个用户控件并多次添加它:

<my:UserControl id="MyControl1" runat="server" />
<my:UserControl id="MyControl2" runat="server" />
<my:UserControl id="MyControl3" runat="server" />

当然,您的用户控件可以像您希望的那样简单或复杂,从而在您的页面上重复使用功能。

但是,根据您的确切需求,您可能需要考虑类似ASP.NET Repeater,ListView或DataGrid控件的内容。使用Repeater之类的东西,您可以将数据绑定到它,并将数据显示在列表/网格中,具有共同的外观。您也可以为Repeater提供标题,项目和页脚部分的HTML / CSS模板,使其看起来一致且专业。

<asp:Repeater id="MyRepeater" runat="server">
  <HeaderTemplate>
    <h1>Products</h1>
  </HeaderTemplate>
  <ItemTemplate>
    <p>
      Product name: <%# Eval("ProductName") %>
    </p>
  </ItemTemplate>
</asp:Repeater>

并在您的代码中执行此操作:

MyRepeater.DataSource = products;
MyRepeater.DataBind();

有许多方法可以在ASP.NET中执行您所要求的内容 - 更具体一点,我们将能够为您提供更具体的帮助。

答案 2 :(得分:-1)

难道你不能在按钮的“On_Click”事件后面的代码中创建一个新面板吗?那是我的建议。您可能需要使用占位符将面板添加到页面上以显示在页面上。