2014-02-13 202 views
0

我在代碼中創建的背後,像這樣一個按鈕:asp.net事件處理程序dynamicallycreated按鈕

some method { 
    Button btnExportToExcel = new Button(); 
    btnExportToExcel.Text = "Export To Excel"; 
    btnExportToExcel.Click += new EventHandler(btnExportToExcel_Click); 
    pnlListView.Controls.Add(btnExportToExcel); 
} 

protected void btnExportToExcel_Click(object sender, EventArgs e) 
     { 
      //do something 
     } 

的問題是,我永遠不能得到從事件方法執行代碼。

這是爲什麼?

+0

何時調用Somethod?應該在PreInit事件中添加Dinamic控件 – Oscar

回答

2

您是否將控件添加到preinit事件處理程序中的頁面? Check

+0

它被加載到Page_Load方法中並且在一個'if(!IsPostBack)'中加載 –

+0

確定將它加載到Pre_Init中可以修復問題。謝謝。 –

+0

還有一個小問題,如果我想在按條件創建的其他控件之後添加按鈕控件,該怎麼辦?這意味着它們可能存在於pre_init –

0

請在頁面初始化事件處理程序中添加動態控件,以便適當地觸發ViewState和事件。

1

您必須將按鈕添加到任何控制器。

protected void Page_Load(object sender, EventArgs e) 
    { 
     Button btnExportToExcel = new Button(); 
     btnExportToExcel.Text = "Export To Excel"; 
     btnExportToExcel.Click += new EventHandler(btnExportToExcel_Click); 
     //this is add the button to the form1 
     this.form1.Controls.Add(btnExportToExcel); 
    } 

    void btnExportToExcel_Click(object sender, EventArgs e) 
    { 
     //... 
     Response.Write("click me..."); 
    } 
+0

對不起,我將它添加到面板。編輯上面的代碼。 –