Gestion du click dans un objet client d'un WebCustomControl ? Marche pas !

smoitry Messages postés 69 Date d'inscription vendredi 27 décembre 2002 Statut Membre Dernière intervention 26 juillet 2007 - 30 mai 2006 à 10:54
smoitry Messages postés 69 Date d'inscription vendredi 27 décembre 2002 Statut Membre Dernière intervention 26 juillet 2007 - 30 mai 2006 à 11:06
Suite au post de fcampagne, je fais un nouveau post car mon problème est apparemment un peu différent du sien ...

En fait, je veux créer un contrôle web personnalisé (un WebCustomControl sous forme de classe à instancier), qui instancie ses contrôles par programme car son rendu sera au final composé d'un tableau dont les cases se rajoutent et se complètent différemment selon les propriétés du contrôle. Mais avant cela, je constate que j'ai beau ajouter le gestionnaire de l'évênement click des LinkButton que je crée, l'évênement n'est jamais traité ...

Par contre, j'ai remarqué que si je le fais dans un WebUserControl (fichier ascx), ça fonctionne, pourquoi ? (ça m'arrange pas trop, dans le designer le contrôle ascx est représenté par un moche cadre gris ...)

Eh oui car j'ai fait un essai pour constater que mis dans un fichier .ascx, ça marche, prenons le code suivant :

protectedLiteral
litResultat;

protectedoverridevoid
CreateChildControls()
{
   base
.CreateChildControls();
   LinkButton l1 = newLinkButton
();
   l1.ID = "l1"
;
   l1.Text = "LinkButton1"
;
   l1.Click += newEventHandler
(linkbutton_Click);
   Controls.Add(l1);
   Literal lit1 = newLiteral
();
   lit1.Text = " "
;
   Controls.Add(lit1);
   LinkButton l2 = newLinkButton
();
   l2.ID = "l2"
;
   l2.Text = "LinkButton2"
;
   l2.Click += newEventHandler
(linkbutton_Click);
   Controls.Add(l2);
   Literal lit2 = newLiteral
();
   lit2.Text = "
"
;
   Controls.Add(lit2);
   Literal lit3 = newLiteral
();
   lit3.Text = " "
;
   Controls.Add(lit3);
   litResultat = lit3;
   Literal lit4 = newLiteral
();
   lit4.Text = "
"
;
   Controls.Add(lit4);
}

void linkbutton_Click(object sender, EventArgs
e)
{
   if (litResultat != null
)
      litResultat.Text = ((LinkButton
)sender).ID;
}

Faites un copier/coller d'une part dans un WebCustomControl (fichier .cs placé dans un projet de type WebControlLibrary), et également dans un WebUserControl (fichier .ascx placé dans le site web), puis placez ces deux contrôles sur une page aspx, et lancez le projet. Essayez, vous verrez que seul le contrôle .ascx gère le clic ...

La question est : POURQUOI ?

Note pour Jesusonline : c'est ça qui me tracasse depuis jeudi

2 réponses

fcampagne Messages postés 195 Date d'inscription vendredi 3 juin 2005 Statut Membre Dernière intervention 13 juillet 2006 3
30 mai 2006 à 11:03
C'est encore moi désolé pour la validation du post de tout a l'heure, j'avais omis que je n'était pas seul a avoir un probléme! Milles excuses!
0
smoitry Messages postés 69 Date d'inscription vendredi 27 décembre 2002 Statut Membre Dernière intervention 26 juillet 2007
30 mai 2006 à 11:06
No souci ! C'est normal, tu as solutionné ton problème, le mien est un peu différent en plus je suis en C#, donc finalement un autre post n'est pas plus mal !
0
Rejoignez-nous