J'ai un UserControl dans un GridView. À quel moment les gestionnaires d'événements personnalisés sont-ils liés à UserControl? S'il vous plaît dites-moi parce que je n'en ai aucune idée.Quand les gestionnaires d'événements personnalisés sont-ils connectés?
Dans le scénario ci-dessous, le gestionnaire d'événements UserCreated est nul au moment où l'événement UserCreated est déclenché, c'est-à-dire pendant la liaison de données. Une fois la page entièrement chargée, les gestionnaires d'événements sont disponibles.
UserControl
public event EventHandler UserCreated;
public event EventHandler UserSelected;
///
/// Bubble up the UserCreated event
///
protected virtual void OnUserCreated(object sender, UserCreatedArgs e)
{
EventHandler handler = UserCreated;
/*
UserCreated above is null during databinding. No handler is present
A handler is present after page has fully loaded i.e. UserCreated != null
*/
if (handler != null)
{
handler(this, e);
}
}
///
/// Raise the OnDataBindingEvent
///
protected override void OnDataBinding(EventArgs e)
{
base.OnDataBinding(e);
InitialiseControl();
}
///
/// Initialises the data in the UserControl.
///
private void InitialiseControl()
{
List userList =
UserController.GenerateUserNameDropDownList(UserGroupName);
OnUserCreated(userList);
}
page sur laquelle le UserControl est hébergé
///
/// Handles the Load event of the Page control.
///
protected void Page_Load(object sender, EventArgs e)
{
UserCreatedHandler += UserControl.UserCreated
}
protected void UserCreatedHandler(object sender, UserControl.UserCreatedArgs e)
{
...handle userCreated event
}
Markup pour la page
asp: GridView ID = "keyPersonnelGridView" runat = "server" Colonnes asp : TemplateField ItemTemplate userControl: UserName ID = "personnelLis t » runat = "server" UserGroupName = "Tous les utilisateurs" /ItemTemplate /asp: TemplateField ..rest des balises fermé /asp: GridView
toute bonne âme peut s'il vous plaît expliquer pourquoi mes gestionnaires d'événements ne sont pas présents quand l'événement est déclenché?
Si possible, pourriez-vous mettre vos réponses ici aussi? http://waxtadpole.wordpress.com/2008/11/18/when-are-custom-event-handlers-attached/ –