2009-08-20 14 views
0

Ich kümmere mich um Knopfdruck und platziere in Panel aber nicht funktioniert?Event Control Funktioniert nicht?

protected void Button1_Click(object sender, EventArgs e) 
    { 
     Button btn = new Button(); 
     btn.Text = "Test button"; 
     Panel1.Controls.Add(btn); 
     btn.Click += new EventHandler(btn_Click); 
    } 

    void btn_Click(object sender, EventArgs e) 
    { 
     Response.Write("<script>alert('test')</script>"); 
    } 

Antwort

1

Wenn Sie dynamisch hinzufügen Steuerelemente auf Ihrer Seite müssen Sie sie bei jeder nachfolgenden Anfrage (Postback) erneut hinzufügen. Die Schaltfläche, die Sie in Button1_OnClick hinzugefügt haben, wird nicht automatisch in einer nachfolgenden Anfrage (z. B. in einem Postback) neu erstellt.

Es gibt viele ähnliche Fragen zu diesem Thema, wo Sie Details finden können. Beispiele Verwenden Sie die folgende Suche:

+0

, was ich meinen Code behide tun sollte? –

0

Stellen Sie sicher, dass Sie der Schaltfläche eine ID zuweisen, und stellen Sie sicher, dass sie bei jeder Erstellung identisch ist.

Erstellen Sie das Steuerelement in der CreateChildControls-Überladung und fügen Sie es einmal als Reaktion auf ein anderes Ereignis nicht genug, um es auf der Seite zu halten.

Sie beste Wette Verfolgung der werden soll, ob die Schaltfläche erstellt werden muss oder nicht:

bool CreateButton 
{ 
    get 
    { 
     if (ViewState["CreateButton"] == null) 
      return false; 

     return (bool)ViewState["CreateButton"]; 
    } 
    set 
    { 
     ViewState["CreateButton"] = value; 
    } 
} 

override void public CreateChildControls() 
{ 
    panel1.Controls.Clear(); 

    if (CreateButton) 
    { 
     Button btn = new Button(); 
     btn.Text = "Test button"; 
     btn.ID = "CreatedButton"; // Note the ID here... 
     Panel1.Controls.Add(btn); 
     btn.Click += new EventHandler(btn_Click); 
    } 
} 

protected void Button1_Click(object sender, EventArgs e) 
{ 
    CreateButton = true; 
    EnsureChildControls(); 
} 

void btn_Click(object sender, EventArgs e) 
{ 
    Response.Write("<script>alert('test')</script>"); 
} 

So etwas sollte für Sie arbeiten ...

Verwandte Themen