Quand on fait un contrôle utilisateur et qu'on l'inclut dans une page ASP, de base, on ne peut pas intercepter dans la page un événement déclenché dans le control (comme le clique sur un bouton par exemple).
Cette source montre comment faire pour pouvoir savoir qu'un événement à été déclenché dans le control utilisateur. Elle est très simple, de façon a bien comprendre le principe :
- dans le control utilisateur, on déclare de événements EventHandler qui seront déclenchés par les événements des objets du control,
- dans la page ASP qui contient le control, on s'abonne à ces événements.
Ainsi, le fait de cliquer sur un des boutons va déclencher l'événement OnBoutonClick associé, ce qui aurait pour effet de déclencher l'événement correspondant dans la page.
Attention, ce code ne marche (à ma connaissance) qu'avec la version 2 du framework .Net et pas avec la 1.
C'est du C#. Pour un équivalent de manipulation d'event en VB.Net, voici une source :
http://www.c2i.fr/code.aspx?IDCode=610
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.
this.UserControl1.OnClick += new EventHandler(UserControl1_OnClick);
??
J'avais un peu oublié ce détail ...
En tout cas, merci beaucoup !!!
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);
??
public event EventHandler OnClick;
Declenchement de l'evenement :
protected void bouton_Click(object sender, EventArgs e)
{
OnClick(this, e); //Ici, OnClick=null -> probleme
}
Vous n'êtes pas encore membre ?
inscrivez-vous, c'est gratuit et ça prend moins d'une minute !
Les membres obtiennent plus de réponses que les utilisateurs anonymes.
Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.
Le fait d'être membre vous permet d'avoir des options supplémentaires.