好像问动态添加控件的人很多,问题大多集中
(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="添加";

}

}

}