2012-10-04 33 views
0

我是通過事件處理程序動態創建按鈕的。但事件沒有被解僱。請幫助我做到這一點。我的部分代碼在這裏。當我以編程方式創建按鈕時,事件不會被觸發

Button btn = new Button(); 
btn.ID = "btn" + i; 
btn.Text = "Add New"; 
Panel1.Controls.Add(btn); 
btn.Click += new EventHandler(this.GreetingBtn_Click); 
Panel1.Controls.Add(new LiteralControl("<br /><br />")); 

    void GreetingBtn_Click(Object sender, EventArgs e) 
    { 
    create(); 
    } 

我想訪問create()函數,當我點擊按鈕。

+1

在哪個頁面事件中創建按鈕? – Habib

回答

0

不知道很多關於你的代碼,我猜你不是在創建ASP.NET

page life cycle

你需要的是什麼了恰當階段控制是PreInit,如下所述:

在開始階段完成之後並在初始化階段開始之前提出。 使用以下事件:

創建或重新創建動態控件。

-1

移動btn.Click += new EventHandler(this.GreetingBtn_Click);向上一級,即在添加到父級之前嘗試路由事件。

Button btn = new Button(); 
btn.ID = "btn" + i; 
btn.Text = "Add New"; 
btn.Click += new RoutedEventHandler(this.GreetingBtn_Click); 
Panel1.Controls.Add(btn); 
Panel1.Controls.Add(new LiteralControl("<br /><br />")); 

    void GreetingBtn_Click(Object sender, RoutedEventArgs e) 
    { 
    create(); 
    } 
+0

這個過程沒有變化.. – romi

+0

我修改了我的答案:嘗試路由事件而不是經典事件。 –

0

如果添加在頁面加載這個動態按鈕,確保其下

if (!IsPostBack) 
{ 
//add button here 
} 
0

總是讓你創建將發應在側!ispostback因爲他們不是一個時間控制的代碼需要重新創建並再次

if (!IsPostBack) 
{ 
    //Your code should be their enter code here 
} 
0
List<string> myControls = new List<string>(); 

protected void Page_Load(object sender, EventArgs e) 
{ 
    if(!IsPostBack) 
    { 
      myControls = new List<string>(); 
      ViewState["myControls"] = myControls; 
    } 
} 

protected void override void LoadViewState(object savedState) 
{ 
    base.LoadViewState(savedState); 
    myControls = (List<string>)ViewState["myControls"]; 

    foreach(string controlID in myControls){ 
      //method to create your buttons goes here. 
      createButtons(controlID); 
    } 
} 

public void createButtons(string btnID){ 
    Button btn = new Button(); 
    btn.ID = btnID; 
    btn.Text = "Add New"; 
    btn.Click += new RoutedEventHandler(this.GreetingBtn_Click); 
    Panel1.Controls.Add(btn); 
    Panel1.Controls.Add(new LiteralControl("<br /><br />")); 
} 

void GreetingBtn_Click(Object sender, RoutedEventArgs e){ 
    create(); 
} 

給這個代碼一試。在asp.net中動態添加控件時,必須重新生成回發中的控件。如上所示,最簡單的方法是使用視圖狀態

不這樣做,常見症狀是正確的:當你點擊它或事件只是在所有不火控制消失。希望這可以幫助別人!

相關問題