2011-11-28 86 views
1
protected void Button1_Click(object sender, EventArgs e) 
{ 
    TableRow tb = new TableRow(); 
    TableCell tc = new TableCell(); 

    DropDownList db = new DropDownList(); 
    db.Items.Add("Bangalore"); 
    db.Items.Add("Mandya"); 
    db.Items.Add("Hassan"); 

    tc.Controls.Add(db); 
    tb.Controls.Add(tc); 

    Table1.Controls.Add(tb); 

    db.SelectedIndexChanged += db_SelectedIndexChanged; 
    db.AutoPostBack = true; 
} 

private void db_SelectedIndexChanged(object sender, EventArgs e) 
{ 
    label.text = "welcome"; 
} 

當此代碼在Button1_Click事件中執行時,db_SelectedIndexChanged不會執行。但是,當我在Page_Load事件中放置相同的Button1_Click代碼塊時,將執行db_SelectedIndexChanged爲什麼我的SelectedIndexChanged事件不會在Button_Click中觸發?

這背後的原因是什麼?

回答

5

儘量把

db.SelectedIndexChanged += db_SelectedIndexChanged; 
db.AutoPostBack = true; 

在Page_Load事件。

不包裝db.SelectedIndexChanged + = db_SelectedIndexChanged;在!Page.IsPostBack中,事件需要在每次加載時連線

1

您正在創建一個動態控件。除非您在頁面的PreInit方法中創建控件,否則該事件不會觸發。

protected void Page_PreInit(object sender, EventArgs e) 
{ 
    DropDownList db = new DropDownList(); 
    db.Items.Add("Bangalore"); 
    db.Items.Add("Mandya"); 
    db.Items.Add("Hassan"); 
    db.SelectedIndexChanged += db_SelectedIndexChanged; 
    db.AutoPostBack = true; 

    tc.Controls.Add(db); 
} 

檢查Page Life cycle瞭解更多信息。

0
protected void Button1_Click(object sender, EventArgs e) 
    { 
    TableRow tb = new TableRow(); 
    TableCell tc = new TableCell(); 

    DropDownList db = new DropDownList(); 
    db.Items.Add("Bangalore");` 
    db.Items.Add("Mandya"); 
    db.Items.Add("Hassan"); 

    tc.Controls.Add(db); 
    tb.Controls.Add(tc); 

    Table1.Controls.Add(tb); 

    db.SelectedIndexChanged += db_SelectedIndexChanged; 
    db.AutoPostBack = true; 
    db_SelectedIndexChanged(null,null); // use this line, i hope it will work now. 

    } 

    private void db_SelectedIndexChanged(object sender, EventArgs e) 
    { 
    label.text = "welcome"; 
    } 

你可以試試這個。

相關問題