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 :

Menu escamotable en Ajax


Sujet :

ASP.NET

  1. #1
    Membre éclairé
    Homme Profil pro
    Inscrit en
    Août 2004
    Messages
    282
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Août 2004
    Messages : 282
    Par défaut Menu escamotable en Ajax
    Bonjour,
    J'ai un menu escamotable dans mon application ; j'utilise un CollapsiblePanelExtender pour qu'il se déploie/se cache joliment, ça marche bien. Extrait du 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
     
    <asp:Panel ID="PanelHeaderMenu" runat="server" Height="20px">
        <asp:Label ID="LabelHeaderPanelMenu" runat="server" Font-Bold="True" 
                                                        Font-Size="9px" style="margin-left: 0px" Width="0px" Font-Names="Arial"></asp:Label>
     
        <asp:Image ID="ImageHeaderMenu" runat="server"
                                    ImageUrl="~/Images/expand_arrow.jpg" />
    </asp:Panel>
     
    <asp:Panel ID="PanelMenu" runat="server" BackColor="#CCCCFF" HorizontalAlign="Left" Width="100%">
        <asp:Menu ID="MenuDeconnexion" runat="server"
            <Items>
                <asp:MenuItem NavigateUrl="~/Login.aspx" Text="Déconnexion" Value="Déconnexion">
                </asp:MenuItem>
            </Items>
        </asp:Menu>
    </asp:Panel>
     
    <ajaxToolkit:CollapsiblePanelExtender ID="CollapsiblePanelExtenderPanelMenu"
                                runat="server" CollapseControlID="PanelHeaderMenu"
                                CollapsedImage="~/Images/collapse_arrow.jpg"
                                ExpandControlID="PanelHeaderMenu" ExpandDirection="Horizontal"   
                                ExpandedImage="~/Images/expand_arrow.jpg"
                                ExpandedSize="200"
                                ImageControlID="ImageHeaderMenu" 
                                SuppressPostBack="true"
                                TargetControlID="PanelMenu"
                                ScrollContents="false"
                                CollapsedText=" "
                                ExpandedText="Menu"
                                TextLabelID="LabelHeaderPanelMenu">
    </ajaxToolkit:CollapsiblePanelExtender>
    Mon but est que ce menu reste dans le même état (ouvert/fermé) quand on passe d'une page à l'autre, mais il reste toujours ouvert par défaut...

    J'ai essayé de montrer/cacher le menu dans mon page_load en fonction d'une variable de session, ou d'un cookie, mais le problème est que le menu est toujours dans le même état côté serveur.

    Comment capturer - côté client - les changements d'état de ce menu ?
    Peut-on inclure un genre de "onClick" dans le code Ajax ci-dessus ?

    Merci d'avance.

  2. #2
    Membre chevronné Avatar de jacky01
    Profil pro
    Développeur .NET
    Inscrit en
    Juin 2007
    Messages
    537
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Juin 2007
    Messages : 537
    Par défaut
    Bonjour,

    J'ai eu le même problème avec les Accordions, pour y remédier j'ai fait mon propre control héritant du control Accordion et j'ai surcharger la méthode OnLoad. Cela fonctionne très bien.

    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
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    using System;
    using System.Collections.Generic;
    using System.ComponentModel;
    using System.Linq;
    using System.Text;
    using System.Web;
    using System.Web.UI;
    using System.Web.UI.WebControls;
    using AjaxControlToolkit;
    using System.Data.Common;
    using System.Data;
     
    namespace Controls
    {
        [DefaultProperty("Text")]
        [ToolboxData("<{0}:Accordion runat=server></{0}:Accordion>")]
        public class ExtendAccordion : Accordion
        {
            private Utilisateur _User;
            public Utilisateur User
            {
                get
                {
                    return _User;
                }
                set
                {
                    _User = value;
                }
            }
     
            private bool _IsValide;
            public bool IsValide
            {
                get
                {
                    return _IsValide;
                }
                set
                {
                    _IsValide= value;
                }
            }
     
            protected override void OnLoad(EventArgs e)
            {
                          // Le code qui gere l'affichage de l'accordion ici
                          // exemple
                          if(_User != "toto")
                          {
                                        this.Visible = false;
                           }
                           else
                           {
                                        this.Visible = true;
                           }
     
            }
    Après j'ai même créer mes propre méthode ce qui ma facilité la vie.

    Je pense que tu faire quelque chose de très ressemblant sans problème, pour résoudre ton problème.

  3. #3
    Membre éprouvé
    Inscrit en
    Septembre 2007
    Messages
    1 137
    Détails du profil
    Informations personnelles :
    Âge : 41

    Informations forums :
    Inscription : Septembre 2007
    Messages : 1 137
    Par défaut
    je n'ai pas tout compris, tu souhaites, lorsque tu changes de page, ouvrir/fermer certains Panels, c'est bien cela?

    Sinon refais une explication.

  4. #4
    Membre éclairé
    Homme Profil pro
    Inscrit en
    Août 2004
    Messages
    282
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Août 2004
    Messages : 282
    Par défaut
    Citation Envoyé par jacky01 Voir le message
    Bonjour,

    J'ai eu le même problème avec les Accordions, pour y remédier j'ai fait mon propre control héritant du control Accordion et j'ai surcharger la méthode OnLoad. Cela fonctionne très bien.

    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
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    using System;
    using System.Collections.Generic;
    using System.ComponentModel;
    using System.Linq;
    using System.Text;
    using System.Web;
    using System.Web.UI;
    using System.Web.UI.WebControls;
    using AjaxControlToolkit;
    using System.Data.Common;
    using System.Data;
     
    namespace Controls
    {
        [DefaultProperty("Text")]
        [ToolboxData("<{0}:Accordion runat=server></{0}:Accordion>")]
        public class ExtendAccordion : Accordion
        {
            private Utilisateur _User;
            public Utilisateur User
            {
                get
                {
                    return _User;
                }
                set
                {
                    _User = value;
                }
            }
     
            private bool _IsValide;
            public bool IsValide
            {
                get
                {
                    return _IsValide;
                }
                set
                {
                    _IsValide= value;
                }
            }
     
            protected override void OnLoad(EventArgs e)
            {
                          // Le code qui gere l'affichage de l'accordion ici
                          // exemple
                          if(_User != "toto")
                          {
                                        this.Visible = false;
                           }
                           else
                           {
                                        this.Visible = true;
                           }
     
            }
    Après j'ai même créer mes propre méthode ce qui ma facilité la vie.

    Je pense que tu faire quelque chose de très ressemblant sans problème, pour résoudre ton problème.

    Salut Jacky,

    Je ne sais pas si on a eu exactement le même pb ; et pour répondre à Tortuegenie, je vais essayer d'être plus précis :

    Je souhaite que quand on passe d'une page à l'autre, mon menu reste ouvert ou fermé.
    Actuellement, si par exemple je suis sur une page A et que je ferme manuellement mon menu, une fois la page B affichée, mon menu s'ouvre, ce qui n'est pas bon - car par défaut dans mon code, il est ouvert.

    Le problème est qu'il faudrait que j'arrive à mettre (par ex) en session l'état courant de mon menu ; mais pour cela, il faudrait voir son état côté client, et non côté serveur, puisque les propriétés "visible" ne changent PAS côté serveur (car pas de postback quand j'ouvre ou je ferme mon menu).

    J'espère avoir décrit mon pb correctement.
    Merci en tout cas pour vos réponses.

  5. #5
    Membre chevronné Avatar de jacky01
    Profil pro
    Développeur .NET
    Inscrit en
    Juin 2007
    Messages
    537
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Juin 2007
    Messages : 537
    Par défaut
    A non j'avais mal compris ton problème.

Discussions similaires

  1. Master page et menu escamotable
    Par TheReturnOfMuton dans le forum ASP.NET
    Réponses: 3
    Dernier message: 26/11/2009, 22h56
  2. Réponses: 9
    Dernier message: 03/02/2009, 23h46
  3. [AJAX] menue horizontale avec ajax
    Par yosraisi dans le forum Général JavaScript
    Réponses: 0
    Dernier message: 31/03/2008, 09h41
  4. [AJAX] menu javascript et ajax
    Par gregius dans le forum Général JavaScript
    Réponses: 24
    Dernier message: 22/06/2006, 12h02
  5. [TILES][Ajax] menu tiles + affichage Ajax
    Par Azanael dans le forum Struts 1
    Réponses: 3
    Dernier message: 23/05/2006, 16h27

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