2010-05-07 10 views
1

Je tente de masquer tous les panneaux d'une page lorsqu'un clic sur un bouton se produit.Masquage de tous les panneaux d'un formulaire de contenu Web dans une page maquette

Ceci est sur un formulaire de contenu Web, dans une page maître.

Le contentplageholder est nommé: Maincontent

J'ai:

foreach (Control c in Page.Form.FindControl("MainContent").Controls) { 
    if (c is Panel) { 
     c.Visible = false; 
    } 
} 

Ce ne trouvent aucun panneau. Les panneaux sont dans un panneau de mise à jour, et j'ai essayé

foreach(Control c in updatePanel.Controls) { }

et cela ne fonctionne pas non plus. J'ai également essayé:

foreach(Control c in Page.Controls) { } 

et cela n'a pas fonctionné non plus.

Une idée de ce qui me manque ici?

Répondre

2

vous devez traverser récursive l'arbre de commande

HidePanels(Page.Form.FindControl("MainContent")) 

void HidePanels(Control parentControl){ 
    foreach (Control c in parentControl.Controls) { 
     if (c is Panel) 
     c.Visible = false; 
    if (c.Controls.Count > 0) 
      HidePanels(c); 
    } 
} 
0

Les panneaux sont dynamiques?

Voici ce que j'ai essayé tout à l'heure ...

  1. Créer une page principale avec un seul endroit Titulaire

    <asp:ContentPlaceHolder id="MainContent" runat="server"> 
    
    </asp:ContentPlaceHolder> 
    
  2. En default.aspx, a ajouté deux panneaux et des boutons, votre premier code snipped fonctionnait très bien ...

foreach (contrôle c dans Page.Form.FindControl ("MainContent"). Commandes) { if (c est Panel) { c.Visible = false; }}