Bonjour a tous

Dans le cadre d'un projet perso, j'ai une page permettant d'initialiser une appli web.

cette page fait appel à plusieurs UserControls.

Le premier est wucResume qui permet d'afficher l'ensemble des étapes, celles qui sont correctes, celles qui sont encore à faire,...

Ce userControl a des boutons pour executer les étapes de configs

WUCResume.ascx
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
 
 <asp:Button ID="btnRunStep1" runat="server" Text="Run" 
        onclick="btnRunStep1_Click" meta:resourcekey="btnRunStep1Resource1" />
...
    <asp:Button ID="btnRunStep2" runat="server" Text="Run" 
        onclick="btnRunStep2_Click" meta:resourcekey="btnRunStep2Resource1" />
boutons qui appellent des évènements de ma page principale

WUCResume.ascx.cs
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
 
        public event EventHandler btnRunStep1Click;
        public event EventHandler btnRunStep2Click;
 
protected void btnRunStep1_Click(object sender, EventArgs e)
        {
            btnRunStep1Click(sender, e);
        }
 
        protected void btnRunStep2_Click(object sender, EventArgs e)
        {
            btnRunStep2Click(sender, e);
        }
default.aspx.cs :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
 
protected void Step1_Click(object sender, EventArgs e)
        {
            .............
        }
Le fonctionnement est le suivant :

lors du chargement de la page, je charge mon WUCResume, je définis les évènements, l'affiche et précise en session que je suis sur le WUC resume

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
 
if (!IsPostBack)
            {
 
                wucResume = (WUCResume)LoadControl("./wucresume.ascx");
                wucResume.btnRunStep1Click += Step1_Click;
                wucResume.btnRunStep2Click += Step2_Click;
 
                phContent.Controls.Clear();
                phContent.Controls.Add(wucResume);
 
                Session["action"] = "resume";
            }
Lors du clic sur Step1, ou Step2, je sais grace a la session que je viens du wucResume et donc le recharge :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
 
 protected void Page_Load(object sender, EventArgs e)
        {
            if (Session["action"] != null)
            {
                if (Session["action"].ToString().CompareTo("resume") == 0)
                {
                    wucResume = (WUCResume)LoadControl("./wucresume.ascx");
                    wucResume.btnRunStep1Click += Step1_Click;
                    wucResume.btnRunStep2Click += Step2_Click;
 
                    phContent.Controls.Clear();
                    phContent.Controls.Add(wucResume);
                }
                else if (Session["action"].ToString().CompareTo("step1") == 0)
                {
                    phContent.Controls.Clear();
                    wucStep1 = (WUCStep1)LoadControl("./wucstep1.ascx");
                    //add the usercontrol STEP1 in the place holder
                    phContent.Controls.Add(wucStep1);
                }
 
                if(!IsPostback)........
            }
le code exécute lors la fonction de mon évènement se trouvant dans ma page qui va charger le wuc de l'étape voulue :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
 
protected void Step1_Click(object sender, EventArgs e)
        {
            phContent.Controls.Clear();
            wucStep1 = (WUCStep1)LoadControl("./wucstep1.ascx");
            //add the usercontrol STEP1 in the place holder
            phContent.Controls.Add(wucStep1);
 
        }
Le UserControl Step1 s'affiche parfaitement.

de plus dans le pageLoad de mon wucstep1:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
 
protected void Page_Load(object sender, EventArgs e)
        {
            Session["action"] = "step1";
        }
L'ensemble de ces étapes fonctionnent parfaitement puisque je sais quel WUC est affiché par ma session et je le recharge donc lors du pageLoad.


Mais dans mon WUCStep1 il y a un bouton qui a son évènement dans le WUC et non dans la page default.

. Or lors du premier clic sur ce bouton rien ne se passe, la fonction appelée par le bouton n'est jamais appelée , il faut que je clique une deuxième fois sur ce bouton pour que la fonction soit appelée.

J'ai fait du pas à pas et c'est exactement le même code qui est exécuté à chaque fois, sauf que la seconde fois, la fonction est bien appelée....

Est ce que qqun aurait la cause de cette particularité et comment y remédier.

Merci