我试图在点击按钮时使用c#向我的asp页面添加一些动态表单元素。代码正在运行,但它会覆盖自身,而不是在上一次单击生成的元素之后单击生成面板,标签和文本框。计数器由全局变量控制。我可能错过了很简单的东西,但任何帮助都会很棒。 谢谢!
protected void Button1_Click(object sender, EventArgs e)
{
Panel pnl = new Panel();
pnl.ID = "Panel" + count.ToString();
Panel1.Controls.Add(pnl);
TextBox tb = new TextBox();
tb.ID = "Textbox" + count.ToString();
pnl.Controls.Add(tb);
Label lbl = new Label();
lbl.ID = "Label" + count.ToString();
lbl.Text = "Label" + count.ToString();
pnl.Controls.Add(lbl);
count++;
}
你可以在这里看到效果:
答案 0 :(得分:1)
每次单击该按钮,都会收到回发。在页面的后续加载中,asp.net没有您在事件处理程序中添加的先前控件的内存。您需要自己跟踪 - 在viewstate中 - 通过在处理下一个回发之前询问viewstate,在页面的Init事件中重新创建以前添加的控件。如果您不在Init中重新创建它们,它们将无法正常运行(例如,它们将无法自行回发或以其他方式为页面的事件生命周期做出贡献。)
以下是一些更多信息: http://forums.asp.net/t/1186195.aspx/1