ASP.NET动态添加控件
ASP.NET(C#)中动态添加控件时,需要在Page_Load事件中添加已创建过的控件,否则在点击添加控件的按钮后,由于触发了页面回发事件,之前添加的控件代码会消失。已添加过得控件可记录在ViewState中,具体动态添加控件的代码如下:
页面代码:
<form id="form1" runat="server">
<div id="divContainer" runat="server">
</div>
<asp:Button ID="btnAdd" runat="server" Text="添加控件" onclick="btnAdd_Click" />
</form>
服务端代码:
/// <summary>
/// Page_Load
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
protected void Page_Load(object sender, EventArgs e)
{
int controlNumber = GetControlNumber();
for (var i = 1; i < controlNumber; i++)
{
AddTextBox(i);
}
}
/// <summary>
/// 添加控件
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
protected void btnAdd_Click(object sender, EventArgs e)
{
//构造控件的ID
int controlNumber = GetControlNumber();
//添加控件
AddTextBox(controlNumber);
//控件Id序号增加1
ViewState["controlNumber"] = controlNumber + 1;
}
/// <summary>
/// 取得控件Id序号
/// </summary>
/// <returns></returns>
protected int GetControlNumber()
{
int controlNumber = 1;
if (ViewState["controlNumber"] != null)
controlNumber = int.Parse(ViewState["controlNumber"].ToString());
return controlNumber;
}
/// <summary>
/// 添加TextBox控件
/// </summary>
/// <param name="id"></param>
protected void AddTextBox(int id)
{
TextBox tb = new TextBox();
tb.ID = "txt" + id;
divContainer.Controls.Add(tb);
}