c# - 在表中动态添加下拉列表的问题(C#)

标签 c# asp.net

我正在做一个非常简单的任务,但我卡在了一点。我想创建一个简单的页面(带有 C# 的 ASP.NET),它最初显示一个按钮。当用户单击按钮时,应将下拉列表动态添加到页面。我正在通过 C# 执行此操作。我的问题是列表是第一次添加到页面,但之后只刷新页面,不再添加列表。我不知道发生了什么事。这是我的代码:

Default.aspx

    <%@ Page Title="Home Page" Language="C#" MasterPageFile="~/Site.master"  AutoEventWireup="true"
    CodeFile="Default.aspx.cs" Inherits="_Default" %>
    <asp:Content ID="HeaderContent" runat="server" ContentPlaceHolderID="HeadContent">
    </asp:Content>
    <asp:Content ID="BodyContent" runat="server" ContentPlaceHolderID="MainContent">
    <h2>Welcome to My Store!</h2>

    <table id="itempanel" runat="server"></table>
    <asp:Button ID="additem" Text="Add" OnClick="addElement" runat="server" />

    </asp:Content>

Default.aspx.cs

public partial class _Default : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{

}

protected void addElement(object sender, EventArgs e)
{
    HtmlTableRow tr=new HtmlTableRow();
    HtmlTableCell tc = new HtmlTableCell();
    DropDownList mylist = new DropDownList();
    ListItem myitem = new ListItem("Item1");
    mylist.Items.Add(myitem);
    myitem = new ListItem("Item2");
    mylist.Items.Add(myitem);
    myitem = new ListItem("Item3");
    mylist.Items.Add(myitem);
    tc.Controls.Add(mylist);
    tr.Cells.Add(tc);
    itempanel.Rows.Add(tr);
  }
}

最佳答案

动态添加的控件需要在回发时重新添加。

一种简单的方法是将相同的代码放入 Load 事件并进行设置

    if(postback)
        {
      //your control adding code goes here... so when it is postback load event will add                   

      the control again. Other way is add the control through another method... 

          }

另一件事...通常我们在 Page lifecycle Pre_Init 方法中添加控件。也阅读相关内容。

更新

我忘了提一下,您还可以在 View 状态中保存数据状态。无论如何,您都必须在回发时重新创建控件,但是如果数据已更改,如果您已将其保存在那里,则可以从 View 状态中检索回来。如何做到这一点,如下所示。 http://chiragrdarji.wordpress.com/2009/05/20/maintain-viewstate-for-dynamic-controls-across-the-postback/

关于c# - 在表中动态添加下拉列表的问题(C#),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7467056/

相关文章:

c# - 为什么我会收到此时区错误,是否有更好的方法在 Google map 时区和 Windows 时区之间进行映射?

c# - 如何使用 .NET 的 WebBrowser 或 mshtml.HTMLDocument 动态生成 HTML 代码?

c# - XML 反序列化缺失元素

c# - IHttpAsyncHandler 和 IObservable 网络请求

无需重定向的 ASP.NET 表单例份验证

c# - 成员(member)身份不被承认

c# - 如何将枚举传递给函数以及如何在 if 语句 c# 中评估枚举

c# - XNA 可以处理多少(低多边形)模型?

c# - 实体 orderby 的 linq

*.browsers 文件中的 ASP.NET 通配符