单击时,动态创建的控件将消失

use*_*753 1 c# dynamic visual-studio-2008

点击它之后,动态控件就丢失了,为什么会发生这种情况,以及如何解决它.

protected void Page_Load(object sender, EventArgs e)
{
    /*DropDownList1_SelectedIndexChanged(sender, e);
    Label1.Text += "<br/>huh?";
    Label1.Text = MapPath("dawd");*/
}
protected void DropDownList1_SelectedIndexChanged(object sender, EventArgs e)
{
    //PlaceHolder1.Controls.Clear();
    for (int i = 0; i < DropDownList1.SelectedIndex + 1; i++)
    {
        CheckBox cb = new CheckBox();
        cb.AutoPostBack = true;
        cb.CheckedChanged += new EventHandler(cb_CheckedChanged);
        PlaceHolder1.Controls.Add(cb);
        PlaceHolder1.Controls.Add(new LiteralControl("<br/>"));
    }
}

void cb_CheckedChanged(object sender, EventArgs e)
{
    //DropDownList1_SelectedIndexChanged(sender, e);
    Label1.Text += "<br/>adsd";
    //throw new NotImplementedException();
}
Run Code Online (Sandbox Code Playgroud)

欢呼,Jaf

Ode*_*ded 7

必须在每次回发中重新创建动态创建的控件,否则它们将不可用,并且不会触发其事件.

您只需在下拉列表更改时添加复选框,因此任何其他回发都不会添加它们.

最好在页面OnInit事件上创建动态控件.

在这里阅读页面生命周期.