Page 1 of 1

Asp.net C# AddEventHandler

Posted: Tue Aug 03, 2010 9:23 pm
by Minigo
J'ai un petit code simple qui ne fonctionne pas.
Au départ, j'ai un bouton.
Quand je clique sur ce bouton, un 2è autre bouton apparait et je lui insère un event (btn2_Click) de façon dynamique.
Lorsque je clique sur ce 2è bouton, l'événement n'est jamais appelé.

J'ai cherché partout sur le web, c'est cette façon de faire qu'on dit, mais ça marche pas!

Code: Select all

    protected void Page_Load(object sender, EventArgs e)
    {
    }

   // Cette fonction est appelé quand je clique sur le premier bouton.
    public void Button1_Click(object sender, EventArgs e)
    {
        Button btn2 = new Button();
        btn2.ID = "TEST";

        btn2.Text = "X";
        btn2.Click += new EventHandler(this.btn2_Click);
        Panel1.Controls.Add(btn2);
    }

    public void btn2_Click(object sender, EventArgs e)
    {
        Label2.Text = "EVENT!!";
    }

Code ASPX

Code: Select all

<%@ Page Language="C#" AutoEventWireup="true" CodeFile="test.aspx.cs" Inherits="SITE_HD_ADMIN_test" %>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
    <title></title>
</head>
<body>
    <form id="form1" runat="server">
    <div>
        <asp:Label ID="lblControlList" runat="server" Text="Label"></asp:Label>
            <asp:Label ID="Label1" runat="server" Text="Label"></asp:Label>
        <asp:Label ID="Label2" runat="server" Text="Label"></asp:Label>

        <asp:Panel ID="Panel1" runat="server">
        </asp:Panel>


    <asp:Button ID="Button1" runat="server" onclick="Button1_Click" Text="Button" />
    </div>

    </form>
</body>
</html>

Re: Asp.net C# AddEventHandler

Posted: Wed Aug 04, 2010 9:38 am
by Salsa
Ah...oui... ah hummmm







:ange:

Re: Asp.net C# AddEventHandler

Posted: Wed Aug 04, 2010 10:00 am
by Minigo
CBR!!!
Toi aussi tu comprends pas pourquoi ca marche pas hein??? :)

Si tu veux, je peux te sortir le résultat de la stack!!! :berk1:

Re: Asp.net C# AddEventHandler

Posted: Wed Aug 04, 2010 10:55 am
by hyksos
Tu peux pas modifier une page web dynamiquement une foit qu'elle est loadé, soit tu passe par un script client ou tu ajoute ton code dans ta Page_Load et tu update la page: http://www.aspnettutorials.com/tutorial ... sharp.aspx" onclick="window.open(this.href);return false;

Re: Asp.net C# AddEventHandler

Posted: Wed Aug 04, 2010 1:32 pm
by Minigo
hyksos wrote:Tu peux pas modifier une page web dynamiquement une foit qu'elle est loadé, soit tu passe par un script client ou tu ajoute ton code dans ta Page_Load et tu update la page: http://www.aspnettutorials.com/tutorial ... sharp.aspx" onclick="window.open(this.href);return false;
Même si le bouton 1 force un postback?

Le bouton 2 s'affiche quand je click sur le bouton 1.

Mais cette ligne:

btn2.Click += new EventHandler(this.btn2_Click);

n'a aucun effet...

Re: Asp.net C# AddEventHandler

Posted: Wed Aug 04, 2010 1:43 pm
by hyksos
Chu pas un pros en ASP (En fait je déteste ça lol), mais selon moi ton object btn2 devient unreachable à cause du postback, tu dois donc le recréer au Page_Load. Garde toi un flag static dans ta class pour savoir si tu doit le créer ou non dans le Page_Load, tu modifi ce flag dans ton Button1_Click.

Re: Asp.net C# AddEventHandler

Posted: Wed Aug 04, 2010 1:50 pm
by Minigo
Pas fou!!!!

J'en r'donne des news...

Re: Asp.net C# AddEventHandler

Posted: Wed Aug 04, 2010 1:52 pm
by Minigo
hyksos wrote:Chu pas un pros en ASP (En fait je déteste ça lol),
Moi, mon client est en train de me le faire détester...