IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

ASP.NET Discussion :

Sauvergarde etat menu en css/javascript (deroule/non deroule) d'une page à l'autre


Sujet :

ASP.NET

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Octobre 2007
    Messages
    61
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2007
    Messages : 61
    Par défaut Sauvergarde etat menu en css/javascript (deroule/non deroule) d'une page à l'autre
    Bonjour(soir),

    Tâchons d'être clair ...

    Voilà, j'utilise un menu vertical dans mon site asp.net, celui fonctionne avec un mélange de
    javascript/css et est incorporé au sein d'une master-page.
    Le but du javascript est de dérouler/enrouler verticalement les menus, et cela focntionne.
    Par défaut à l'ouverture d'une page, tous les menus sont déroulés.
    Malheuresement, en passant d'une page à l'autre, tous les menus reviennent à l'état initial, c'est à dire tous déroulés, malgré que la master page soit la même...

    Des avis pour modifier ce fontionnement?

    Cordialement,

    Bonne soirée | journée !

    mon code javascript :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
     
    <script type="text/javascript">
            //window.onload=init; // décommenter pour enrouler tous les menus par défaut
            function montre(id) {
     
                var d = document.getElementById(id);
                if (d.style.display=='none')
                    {d.style.display='block';}
                else
                    {d.style.display='none';}
            }
            function init(id){
                for (var i = 1; i<=10; i++)
                {
                       if (document.getElementById('smenu'+i))
                       {document.getElementById('smenu'+i).style.display='none';}
                 }
            }
        </script>

  2. #2
    Expert confirmé

    Avatar de Philippe Vialatte
    Homme Profil pro
    Architecte technique
    Inscrit en
    Juillet 2004
    Messages
    3 029
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Architecte technique
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Juillet 2004
    Messages : 3 029
    Par défaut
    hmmm...

    j'avais fait un truc comme ca en ajoutant un controle hiddenfield a ma page aspx, que je mettais a jour en javascript quand je deroulais/enroulais le menu...

    comme c'est un controle serveur, son etat est stocke dans le viewstate, et dans la fonction init, tu ajoutes qq chose comme :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    var estVisible = document.getElementById(<% = monChampCache.ClientID %>).value;
     
    document.getElementById('smenu'+i).style.display=estVisible
    et tu changes le contenu de estVisible de none a block dans ta fonction montre...

    Mon Blog

    The Cake is still a lie !!!



    Vous voulez contribuer à la rubrique .NET ? Contactez-moi par MP.
    Vous voulez rédiger des articles pour la rubrique .NET ? Voici la procédure à suivre.

  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Octobre 2007
    Messages
    61
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2007
    Messages : 61
    Par défaut
    Merci pour cette réponse, je suis débutant, je connaissais pas les hiddenfield...
    Par contre, si j'ai bien compris, cela m'oblige à créer un hiddenfield par sous-menu ? A moins qu'il y ai une astuce ?

  4. #4
    Membre confirmé
    Profil pro
    Inscrit en
    Octobre 2007
    Messages
    61
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2007
    Messages : 61
    Par défaut
    Il semble que la fonction init de ma masterpage (window.onload=init ne soit pas appelé à chaque chargement de page.
    Enfin c'est ce que je peux constater avec firebug, outil sur lequel je débute cependant..
    Du coup je ne peux pas appliquer cette méthode.

    voici mon code :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    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
    35
    36
    37
    38
     
    <script type="text/javascript">
            window.onload=init;
            function montre(id) 
            {
    	        var d = document.getElementById(id);
    	        if (d.style.display=='none') 
    		    {
    		        d.style.display='block';
    		        document.getElementById('<%=MonChampCache1.ClientID %>').value="block";    
    		    }
    	        else
    		    {
    		        d.style.display='none';
    		        document.getElementById('<%=MonChampCache1.ClientID %>').value="none";    
    		    }
            }
            function init(id)
            {
     
    	        for (var i = 1; i<=10; i++) 
    	        {
    	        if (document.getElementById('smenu'+i))
    	        {
                      var estVisible=document.getElementById('<%=MonChampCache1.ClientID %>').value;
                      if (estVisible=='none')
                      {
                        document.getElementById('smenu'+i).style.display='none'; 
                      }
                      else
                      {
                        document.getElementById('smenu'+i).style.display='block'; 
                      }
                }
                }
     
    		}
    </script>

  5. #5
    Membre chevronné
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Novembre 2004
    Messages
    417
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : Finance

    Informations forums :
    Inscription : Novembre 2004
    Messages : 417
    Par défaut
    moi perso j'ai fais aussi la même chose mais je stock les menus ouvert dans un cookie. C'est plutot cool comme ca si l'utilisateur a sa session qui expire quand il revient les menus sont comme avant.

    après c'est suivant les gouts de chacun.

  6. #6
    Membre confirmé
    Profil pro
    Inscrit en
    Octobre 2007
    Messages
    61
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2007
    Messages : 61
    Par défaut
    Je suis justement en recherche de solutions..car pour l'instant avec les hiddenfield ça ne fonctionne pas..
    Les cookies me paraissent être une bonne option..si tu peux m'aiguiller un peu
    sur cette solution .. ? (je suis débutant)

    En tous cas merci pour ta réponse.

Discussions similaires

  1. variables de session non conservées d'une page à l'autre
    Par titemimine dans le forum Langage
    Réponses: 10
    Dernier message: 04/06/2010, 16h29
  2. Expanding vertical menu en CSS/javascript
    Par rems033 dans le forum Mise en page CSS
    Réponses: 1
    Dernier message: 07/11/2008, 11h34
  3. Expanding vertical menu en CSS/javascript
    Par rems033 dans le forum Mise en page CSS
    Réponses: 4
    Dernier message: 07/11/2008, 09h31
  4. Menu en CSS, Javascript ou les 2 ?
    Par senacle dans le forum Mise en page CSS
    Réponses: 16
    Dernier message: 14/08/2008, 16h08

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo