动态创建/加载用户控件只能工作一次!

时间:2011-07-16 03:02:58

标签: c# asp.net webforms dynamically-generated

protected void addMoreDay_btn_Click(object sender, EventArgs e)
        {
            Control OneMoreDay = LoadControl("~/controls/Days/DayAdd.ascx");
            Days_div.Controls.Add(OneMoreDay);
        }

我将userControl动态加载到div元素..但问题是它只能运行一次! ..我的意思是我单击addMoreDay_btn按钮然后它可以工作然后我再次点击它它不会创建我控制的另一个实例!

修改

我认为它有效,但它不会保存最后创建的...它只是用新创建的控件替换它...但我仍然不知道如何解决这个问题! = S

1 个答案:

答案 0 :(得分:5)

问题正在发生,因为动态添加的控件在每次回发之前被再次创建。为了让动态控件在回发中保持不变,每次页面回发时都必须添加动态控件。

尝试以下代码。请注意,控件正在Page_Init方法中添加:

protected void addMoreDay_btn_Click(object sender, EventArgs e)
{
    Control OneMoreDay = LoadControl("~/controls/Days/DayAdd.ascx");
    Days_div.Controls.Add(OneMoreDay);
    Session["MyControl"] += 1
}


protected void Page_Init(object sender, EventArgs e)
{
    for (int i = 1; i <= (int)Session["MyControl"]; i++) {
        Control OneMoreDay = LoadControl("~/controls/Days/DayAdd.ascx");
        Days_div.Controls.Add(OneMoreDay);        
    }
}

请参阅here