我尝试以编程方式在webForm中添加项目(如label,table,...)。我尝试创建一个事件点击按钮,每次点击添加标签。但每次都停在一个标签上,然后下次点击没有任何反应。
这是我的代码,适合那些想看看我尝试过的人:
protected void btn_Valid_Click(object sender, EventArgs e)
{
this.Page.Form.Controls.Add(new Label() { Text = "test" });
}
我们可以在asp.net中执行此操作,还是应该使用其他语言(如javascript)?
答案 0 :(得分:3)
它只创建一个Label,因为在PostBack期间丢失了一个Label。
在您的点击事件中,您必须增加标签(和/或其他控件)的计数器,并在Page_Init
中重新创建。每次和每次页面回发。记住ViewState中的计数器。
像往常一样,我推荐这篇关于ASP.NET Page Life Cycle
答案 1 :(得分:-1)
对于那些想要真正回答这一步的人来说,按照这一步,它对我有用:
this.Page.Forms.Controls.Add(lbl_test)
种类,尝试找到另一种方法,比如存储那些标签的数据(例如在字符串数组中)。这是代码示例: protected void btn_test_Click(object sender, EventArgs e) {
tabLabel[count_tabLabel] = "hello world";
// Do the if(IsCallBack) {} for avoid having your first label skipped
count_tabLabel++;
}
protected void Page_Init(object sender, EventArgs e) {
for (int i = 0; i < cpt_l; i++)
{
Page.Form.Controls.Add(tabLabel[count_tabLabel]);
}
}
实际上页面是自动重新加载的,即asp页面循环寿命。因此,您需要在webForm上的每次修改时重新加载所有项目,如标签或更复杂的东西。
希望它有所帮助!
P.S。: