UserControl Gestionnaire d'Événements du pas de tir
Je charger dynamiquement un contrôle utilisateur dans la Vue dans un contrôle MultiView. Bien que le contrôle UserControl ajoute un gestionnaire d'événement, l'événement se déclenche jamais.
Ce qui me manque ici?
Merci!
Contenant de la page ASPX:
protected override void OnPreRender(EventArgs e)
{
if (MultiView1.ActiveViewIndex == 2) //If the tab is selected, load control
{
Control Presenter = LoadControl("Presenter.ascx");
(MultiView1.ActiveViewIndex.Views[2].Controls.Add(Presenter);
}
base.OnPreRender(e);
}
Présentateur.ascx.cs
override protected void OnInit(EventArgs e)
{
Retry.Click += this.Retry_Click; //This is a .Net 2.0 project
base.OnInit(e);
}
protected void Retry_Click(object sender, EventArgs e)
{
//This never fires
}
Vous devez vous connecter pour publier un commentaire.
Je pense qu'il n'est pas de tir parce que vous êtes de charger le contrôle de votre page de pré-rendu de l'événement. Lors de la publication, le contrôle est perdu car il n'y a pas de vue l'état pour cela. Par conséquent, il n'y a aucun contrôle de l'incendie de son événement. Essayez de charger le contrôle de la page de l'événement init. Laissez-nous savoir ce qui se passe!
Publication de la gestion des événements est fait avant le rendu de sorte que le contrôle n'est pas présent dans la page, dans votre cas.
Le cycle de vie des événements sont déclenchés dans cet ordre (sauté un peu):
Et la gestion des événements est faite entre la Charge et de pré-rendu (au cas où certains événements de changer la façon dont la page doit être rendu, il est logique).
Donc il suffit de déplacer votre code de chargement de la nouvelle tentative de contrôle du Chargement ou de l'Init.
Référence: Asp.Net Page Vue D'Ensemble Du Cycle De Vie
Le contrôle doit être visible d'abord être en mesure d'entrer dans OnPreRender événement.
mais peut-être que vous voulez qu'il soit invisible.
le assurez-vous d'avoir EnableViewState = false;
Il semble que le contrôle n'est pas d'être ajouté après chaque post de retour, je sortirais de l'instruction if dans le contenant aspx page pour voir si cela résout le problème...im en supposant Retry est un bouton?