好像问动态添加控件的人很多,问题大多集中
(1)动态添加的按钮不能提交
(2)动态添加的文本框取不到值
(3)动态添加的控件页面刷新后消失
(4)动态添加的控件页面刷新重复添加
(5)动态添加的控件不知道怎么移除
问题百出,但是其实这些都是非常简单的,可能疏忽了一点两点,补充以前写的2篇文章(以前写的比较乱)
这个页面实现:
点击添加按钮-》添加一个文本框一个提交按钮-》点击提交按钮输出文本框值
点击删除按钮(就是前面那个添加按钮)-》移除文本框和提交按钮
using System; using System.Collections; using System.ComponentModel; using System.Data; using System.Drawing; using System.Web; using System.Web.SessionState; using System.Web.UI; using System.Web.UI.WebControls; using System.Web.UI.HtmlControls; namespace csdn2 { /**//// <summary> /// WebForm65 的摘要说明。 /// </summary> public class WebForm65 : System.Web.UI.Page { protected System.Web.UI.WebControls.Button Button1; private void Page_Load(object sender, System.EventArgs e) { if(Page.IsPostBack) { if(ViewState["adduc"]!=null) { adduc(); } } } Web 窗体设计器生成的代码#region Web 窗体设计器生成的代码 override protected void OnInit(EventArgs e) { // // CODEGEN: 该调用是 ASP.NET Web 窗体设计器所必需的。 // InitializeComponent(); base.OnInit(e); } /**//// <summary> /// 设计器支持所需的方法 - 不要使用代码编辑器修改 /// 此方法的内容。 /// </summary> private void InitializeComponent() { this.Button1.Click += new System.EventHandler(this.Button1_Click); this.Load += new System.EventHandler(this.Page_Load); } #endregion private void Button1_Click(object sender, System.EventArgs e) { if(ViewState["adduc"]==null) { adduc(); ViewState["adduc"]=1; } else { deluc(); ViewState["adduc"]=null; } } private void Button2_Click(object sender, System.EventArgs e) { TextBox t=(TextBox)Page.FindControl("t"); if(t!=null)Response.Write(t.Text); } public void adduc() { TextBox t=new TextBox(); t.ID="t"; Page.Controls[1].Controls.Add(t); this.Button1.Text="删除"; Button b=new Button(); b.Text="提交"; b.ID="b"; b.Click += new System.EventHandler(this.Button2_Click); Page.Controls[1].Controls.Add(b); } public void deluc() { Page.Controls[1].Controls.Remove(Page.FindControl("t")); Page.Controls[1].Controls.Remove(Page.FindControl("b")); this.Button1.Text="添加"; } } }