如何在按钮单击时添加新的动态控件?

时间:2013-10-28 12:00:33

标签: asp.net visual-studio-2012 dynamic

当我点击btnGDynamicCont时我想加载第一组控件,然后在每次进一步点击该按钮时,添加一个新控件(文本框)和其他控件,所以每次单击它时我都会添加一个新文本框跨州。

你知道我应该在哪里添加新文本框的创建,以便在每次回发后保留它吗?

{
    protected void Page_Load(object sender, EventArgs e)
    {
        if (Convert.ToString(ViewState["Generated"]) == "true")
            GenerateDynamicControls();

    }

    public void GenerateDynamicControls()
    {
        TextBox txtDynamic = new TextBox();
        txtDynamic.ID = "txtDynamic";
        txtDynamic.Text = "Dynamic TextBox";
        Page.Form.Controls.Add(txtDynamic);

        TextBox txtDynamic2 = new TextBox();
        txtDynamic2.ID = "txtDynamic2";
        txtDynamic2.Text = "Dynamic Textbox";
        Page.Form.Controls.Add(txtDynamic2);

    }

    protected void btnGDynamicCont_Click1(object sender, EventArgs e)
    {
        if (Convert.ToString(ViewState["Generated"]) != "true")
        {
            GenerateDynamicControls();
            ViewState["Generated"] = "true";
        }
        else
        {
            Response.Write("<h2>Controls are already exist in page</h2>");

        }
    }
}

}

2 个答案:

答案 0 :(得分:0)

动态控件通常在Page_Load方法中重新创建。有关详细信息,请参阅Dynamically Created Controls in ASP.NET文章。

答案 1 :(得分:0)

您可以参考以下链接,其中涉及非常类似的问题。

unable to add more than one server control dynamically in asp.net

每次发生回发时,您都应该在page_load事件中重新创建已存在的控件(动态添加),并在button_click事件中创建新控件。

使用一些逻辑为要维护的视图状态的控件生成id。如果在回发之前和之后生成的控件的id相同,VIEWSTATE将自动处理。

跟踪文本框数量的一种方法是将计数存储在会话中。