注意:
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 >
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:";
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:";