2010-09-03 100 views
0

动态控件在我点击它后就消失了,为什么会发生这种情况,以及如何解决这个问题。动态创建的控件在点击时消失点击

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(); 
} 

欢呼声,JAF

回答

6

动态创建的控件在每一个回发重新创建,否则将不可用,他们对事件的非必火。

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

最好在页面OnInit事件中创建您的动态控件。

阅读关于页面生命周期here

+0

是的,但我希望它只在从下拉列表中选择时创建,如何 – user434753 2010-09-03 08:16:19

+0

@ jbs135 - 就像你做的那样。但是,如果稍后的按钮/链接点击意味着它们消失(因为它们不会被重新创建),请不要感到惊讶。 – Oded 2010-09-03 08:30:18