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);

}

来源: 谢斌个人博客ASP.NET动态添加控件
转载请以链接形式标明本文地址!本文地址:https://www.xb02.com/article/153
发表评论

发表评论