2009-10-19 7 views
2

J'ai un masterpage avec un panneau de mise à jour:Usercontrol postback ne fonctionne pas dans UpdatePanel

<asp:UpdatePanel ID="UpdatePanel" runat="server" ChildrenAsTriggers="true" EnableViewState="False" 
       UpdateMode="Conditional"> 
       <ContentTemplate> 
        <div id="mainContent"> 
         <asp:ContentPlaceHolder ID="ContentPlaceHolder1" runat="server"> 
         </asp:ContentPlaceHolder> 
        </div> 
       </ContentTemplate> 
       <Triggers> 
       </Triggers> 
      </asp:UpdatePanel> 

Ensuite, je dois page Default.aspx qui utilise le fichier masterpage:

<asp:Content ID="Content1" runat="server" ContentPlaceHolderID="ContentPlaceHolder1"> 
<asp:PlaceHolder ID="plhCurrentItem" runat="server"></asp:PlaceHolder> 
</asp:Content> 

je charge programme usercontrols en l'espace réservé avec id plhCurrentItem.

Le problème est que lorsque je clique sur un bouton dans la commande usercontrol, aucun événement ne se déclenche. La commande usercontrol disparaît et le panneau de mise à jour est laissé vide.

Qu'est-ce que je fais mal?


Mise à jour

code utilisé pour ajouter usercontrols. La méthode LoadControls est appelée à partir de l'événement Page_load.

Control ctlCurrentItem = null; 

public string currentControl 
{ 
    get { return ((string)Session["currentControl"]); } 
    set { Session["currentControl"] = value; } 
} 



public void LoadControls() 
{ 
    switch (currentControl) 
    { 
     case "Home": 
      ctlCurrentItem = Page.LoadControl("~/pages/Home.ascx"); 
      ctlCurrentItem.ID = "Home"; 
      break; 
     case "Resume": 
      ctlCurrentItem = Page.LoadControl("~/pages/Resume.ascx"); 
      ctlCurrentItem.ID = "Resume"; 
      break; 
     case "Projects": 
      ctlCurrentItem = Page.LoadControl("~/pages/Projects.ascx"); 
      ctlCurrentItem.ID = "Projects"; 
      break; 
     case "Contact": 
      ctlCurrentItem = Page.LoadControl("~/pages/Contact.ascx"); 
      ctlCurrentItem.ID = "Contact"; 
      break; 
     default: 
      return; 

    } 
    plhCurrentItem.Controls.Clear(); 
    plhCurrentItem.Controls.Add(ctlCurrentItem); 


} 
+0

Comment chargez-vous par programme les commandes usercontrols? Quel événement? – DavidGouge

+0

Dans l'événement de chargement de la page –

+0

Ahh, page_Load, rendez-vous avec la réponse de _rick_schott. : D – DavidGouge

Répondre

2

LoadControls Mettez appel en cas OnPreInt du page life-cycle:

Utilisez cet événement pour les éléments suivants:

  • Vérifiez la propriété IsPostBack pour déterminer si c'est la première fois que la page est être en cours de traitement.
  • Créer ou recréer des contrôles dynamiques.
  • Définissez dynamiquement une page maître.
  • Définissez dynamiquement la propriété Theme.
  • Lit ou définit les valeurs des propriétés de profil.
Questions connexes