DÉCLENCHEMENT D'ÉVÉNEMENT DANS UN CONTROL UTILISATEUR ET REMONTÉ DE L'ÉVÉNEMENT

oxboz Messages postés 30 Date d'inscription samedi 16 août 2003 Statut Membre Dernière intervention 8 juin 2006 - 7 juin 2006 à 16:43
pascatd Messages postés 14 Date d'inscription mardi 15 avril 2003 Statut Membre Dernière intervention 17 septembre 2007 - 17 sept. 2007 à 17:14
Cette discussion concerne un article du site. Pour la consulter dans son contexte d'origine, cliquez sur le lien ci-dessous.

https://codes-sources.commentcamarche.net/source/35057-declenchement-d-evenement-dans-un-control-utilisateur-et-remonte-de-l-evenement-dans-la-page-courante

pascatd Messages postés 14 Date d'inscription mardi 15 avril 2003 Statut Membre Dernière intervention 17 septembre 2007
17 sept. 2007 à 17:14
Vraiment bien comme code.
Pour ma part, je complique un peu la tache :
mon controle est une image ou imageBouton suivant les cas et il est apellé dans un gridView. Suivant certains paramètres de la ligne des données du gridView, L'image est un bouton ou non. Enfin la n'est pas le pb. Mon soucis c'est que je ne peux pas faire
this.UserControl1.OnClick += new EventHandler(UserControl1_OnClick); dans le page_Load mais je suis obligé de le faire de la OnRowCreated de mon gridView.
Et du coup, voici mon erreur

La référence d'objet n'est pas définie à une instance d'un objet.

Erreur source:

Ligne 72 : protected void Image_Click(object sender, EventArgs e)
Ligne 73 : {
Ligne 74 : if (e != null) OnImageClick(sender, e);
Ligne 75 : }

Merci d'avance pour ton aide.
Thanos_the_yopper Messages postés 309 Date d'inscription vendredi 9 janvier 2004 Statut Membre Dernière intervention 5 mars 2009
20 juin 2006 à 15:59
lol y'a pas de quoi, j'espère que tout va bien marché à présent ^^
cs_darunia Messages postés 354 Date d'inscription mercredi 18 décembre 2002 Statut Membre Dernière intervention 24 mars 2011 2
20 juin 2006 à 15:55
et dans ta page qui contient le controle utilisateur, tu as bien, dans le page_load(object sender, EventArgs e) un truc du style :
this.UserControl1.OnClick += new EventHandler(UserControl1_OnClick);
??

J'avais un peu oublié ce détail ...
En tout cas, merci beaucoup !!!
Thanos_the_yopper Messages postés 309 Date d'inscription vendredi 9 janvier 2004 Statut Membre Dernière intervention 5 mars 2009
20 juin 2006 à 15:41
alors là, je vois pas tiens. Je pense pas que ça doit faire une grosse différence, mais j'utilise plutôt "sender" au lieu de "this" en paramètre de l'EventHandler.

Sinon, pour info, tu as bien la version 2 du framework .Net ?

et dans ta page qui contient le controle utilisateur, tu as bien, dans le page_load(object sender, EventArgs e) un truc du style :
this.UserControl1.OnClick += new EventHandler(UserControl1_OnClick);
??
cs_darunia Messages postés 354 Date d'inscription mercredi 18 décembre 2002 Statut Membre Dernière intervention 24 mars 2011 2
20 juin 2006 à 15:31
Declaration de l'evenement :

public event EventHandler OnClick;

Declenchement de l'evenement :

protected void bouton_Click(object sender, EventArgs e)
{
OnClick(this, e); //Ici, OnClick=null -> probleme
}
Thanos_the_yopper Messages postés 309 Date d'inscription vendredi 9 janvier 2004 Statut Membre Dernière intervention 5 mars 2009
20 juin 2006 à 14:25
Bon, déjà, t'as un avatar qui me plait ! (Trop bien Zelda ;) )

Cette petite disgression passée, voyons ton problème. Tu as bien déclaré ton EventHandler dans le controle utilisateur ? Est-ce que tu l'as bien déclaré en public pour que la page qui contient le controle puisse s'abonner à cet EnventHandler ?

Si tu peux, essaye de poster ton code ici, histoire de voir d'où peut venir le problème ^__^
cs_darunia Messages postés 354 Date d'inscription mercredi 18 décembre 2002 Statut Membre Dernière intervention 24 mars 2011 2
20 juin 2006 à 13:47
J'ai suivi ta méthode maus j'ai un probleme : mon EventHandler ne s'instancie pas et reste null, ce qui declenche une exception !
oxboz Messages postés 30 Date d'inscription samedi 16 août 2003 Statut Membre Dernière intervention 8 juin 2006
7 juin 2006 à 16:43
Merci pour ce petit code .. ca m'aide beaucoup, moi qui commence à ASP.NET
Rejoignez-nous