当我点击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>");
}
}
}
}
答案 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将自动处理。
跟踪文本框数量的一种方法是将计数存储在会话中。