Gestion des évennements dans un UserControl
Salut
Je travaille actuellement sur un UserControl personnalisé qui a pour fonction de générer soit un menu vertical, soit une liste de liens illustrés par des icones.
Etant donné que ce composant est présent dans toutes mes masterpages, j’ai créé 2 événements qui me permettent de déclencher l’enregistrement des statistiques de visite des pages.
Je précise que le projet utilise Ajax 3.0. mais que mon contrôle n’est jamais dans un updatepannel.
J’ai également créé une classe dérivée de EventArgs qui me renvoie les informations nécessaires à l’enregistrement des statistiques.
Voici le code de la classe :
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34
|
using System;
/// <summary>
/// Classe EventArg pour les linkbutton en vue des stats
/// </summary>
public class MenusEventArgs:EventArgs
{
private readonly string _strFromURL;
private readonly string _strToURL;
private readonly int _moduleId;
//Constructor
public MenusEventArgs(string strFromURL, string strToURL, int moduleId)
{
this._strFromURL = strFromURL;
this._strToURL = strToURL;
this._moduleId = moduleId;
}
#region Properties
public string FromURL
{
get { return _strFromURL; }
}
public string ToURL
{
get { return _strToURL; }
}
public int ModuleId
{
get { return this._moduleId; }
}
#endregion
} |
Dans mon user control, j’ai créé 2 événements avec leurs délégués.
Code:
1 2 3 4 5
|
public delegate void MenusEventHandler(object sender, MenusEventArgs e);
public delegate void MenuLoadedHandler(object sender, MenusEventArgs e);
public event MenusEventHandler MenusNavigationRequested;
public event MenuLoadedHandler MenuLoaded; |
J'appelle l'évennement MenuNavigationRequested depuis le Item Command de mon repeater (L'autre fonctionne parfaitement) :
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
|
protected void rptMenu_ItemCommand(object source, RepeaterCommandEventArgs e)
{
switch (e.CommandName)
{
case "goTo":
string strFrom = e.CommandArgument.ToString().Split('|')[0];
string strTo = e.CommandArgument.ToString().Split('|')[1];
string modId = e.CommandArgument.ToString().Split('|')[2];
MenusEventArgs _e = new MenusEventArgs(strFrom, strTo, int.Parse(modId));
//--ICI>> MenusNavigationRequested(this, _e); //ToDo Problème a résoudre, peut être AJAX, je ne sais pas... Laurent
Response.Redirect(strTo);
break;
}
} |
J'ai une erreur sur le déclenchement de l'évennement (pas à tous les coups) m'indiquant que MenusNavigationRequested est null.
On a regardé ici à plusieurs ingés, on a pas compris...
Quelqu'un aurait une idée ?
D'avance merci
Laurent
J'adore ce site et notre métier :)
Salut,
Merci, franchement je doutais que l'on puisse me fournir une réponse, et aussi vite, c'est le top.
Merci encore pour ton aide précieuse...
++
Laurent