注意:
1.aspx页面<%Page%>里必须添加 EnableViewState="true",使动态添加的控件状态可保存
2.动态添加的控件最好 放在容器上(这里用Panel这个容器)
3.必须 设置动态控件的ID,否则获取不到该控件
建议:运用 Asp.net Ajax会有 更好的用户体验效果
例子:
test2.aspx:
<%
@ Page Language
=
"
C#
"
AutoEventWireup
=
"
true
"
CodeFile
=
"
Test2.aspx.cs
"
Inherits = " Test2 " Title = " Untitled Page " EnableViewState ="true" %>
<
asp:Panel ID
=
"
Panel2
"
runat
=
"
server
"
Height
=
"
50px
"
Width
=
"
446px
"
>
<
asp:Label ID
=
"
Label1
"
runat
=
"
server
"
Text
=
"
Name1:
"
></
asp:Label
>
<
asp:TextBox ID
=
"
TextBox1
"
runat
=
"
server
"
></
asp:TextBox
>
<
asp:Label ID
=
"
Label2
"
runat
=
"
server
"
Text
=
"
Address1:
"
></
asp:Label
>
<
asp:TextBox ID
=
"
TextBox2
"
runat
=
"
server
"
Width
=
"
149px
"
></
asp:TextBox
><
br
/>
</
asp:Panel
>
<
asp:Button ID
=
"
btnAddAjax
"
runat
=
"
server
"
Text
=
"
Add
"
OnClick
=
"
btnAddAjax_Click
"
/>
<
asp:Button id
=
"
btnShow
"
onclick
=
"
btnShow_Click
"
runat
=
"
server
"
Text
=
"
Show
"
/>
<
asp:Label id
=
"
lblMsg
"
runat
=
"
server
"
>
No Value
</
asp:Label
>


test2.aspx.cs
using
System;
using
System.Data;
using
System.Configuration;
using
System.Collections;
using
System.Web;
using
System.Web.Security;
using
System.Web.UI;
using
System.Web.UI.WebControls;
using
System.Web.UI.WebControls.WebParts;
using
System.Web.UI.HtmlControls;

public
partial
class
Test2 : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
if(ViewState["txtName2"] != null && (bool)ViewState["txtName2"])
{
CreateMyControls();
}
}

protected void btnAddAjax_Click(object sender, EventArgs e)
{
CreateMyControls();
}
protected void btnShow_Click(object sender, EventArgs e)
{
if(ViewState["txtName2"]!=null)
{
TextBox txtName2 = Panel2.FindControl("txtName2") as TextBox;
if(txtName2 != null)
lblMsg.Text = "Name2= " + txtName2.Text;
}

if(ViewState["txtAddr2"]!=null)
{
TextBox txtAddr2 = Panel2.FindControl("txtAddr2") as TextBox;
if(txtAddr2 != null)
lblMsg.Text += " Addr2= " + txtAddr2.Text;
}

}

private void CreateMyControls()
{
Label lblName2 = new Label();
lblName2.Text = "Name2:";

TextBox txtName2 = new TextBox();
//设置ID,否则不能获取到值
txtName2.ID = "txtName2";
//可视状态,否则PostBack后动态添加的控件会不见
ViewState["txtName2"]= true;

Label lblAddr2 = new Label();
lblAddr2.Text = "Addr2:";

TextBox txtAddr2 = new TextBox();
txtAddr2.ID= "txtAddr2";
ViewState["txtAddr2"]= true;
//添加自定义控件
DateControl date2 = base.LoadControl("~/Controls/DateControl.ascx") as DateControl;
date2.ID="date2";
ViewState["date2"]= true;

Panel2.Controls.Add(lblName2);
Panel2.Controls.Add(txtName2);
Panel2.Controls.Add(lblAddr2);
Panel2.Controls.Add(txtAddr2);
Panel2.Controls.Add(date2);
}
}

1.aspx页面<%Page%>里必须添加 EnableViewState="true",使动态添加的控件状态可保存
2.动态添加的控件最好 放在容器上(这里用Panel这个容器)
3.必须 设置动态控件的ID,否则获取不到该控件
建议:运用 Asp.net Ajax会有 更好的用户体验效果
例子:
test2.aspx:

Inherits = " Test2 " Title = " Untitled Page " EnableViewState ="true" %>












test2.aspx.cs













































































