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 :

asp:menu, sitemap et évènement onmenuitemclick qui se lance "aléatoirement"


Sujet :

ASP.NET

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Inscrit en
    Septembre 2003
    Messages
    60
    Détails du profil
    Informations forums :
    Inscription : Septembre 2003
    Messages : 60
    Par défaut asp:menu, sitemap et évènement onmenuitemclick qui se lance "aléatoirement"
    Bonjour tout le monde,

    Je sèche sur ce problème depuis 24 heures maintenant... dur...
    J'ai créé un asp:menu, dont le binding se fait avec un web.sitemap. A côté de ça j'ai un roleProvider et un siteMapProvider custom pour répondre à des problématiques métiers.
    Sur le siteMapProvider, j'hérite du XmlSiteMapProvider juste pour overrider la fonction IsAccessibleToUser()...
    L'ensemble du site est développé avec le framework 4.0 (avec rendering 4.0).

    L'affichage du menu selon les rôles etc. fonctionne très bien. Le problème par contre est que l'évènement "onMenuItemClick" n'est pas intercepté à chaque fois !

    Je précise, l'évènement est correctement intercepté sur le premier niveau de mon menu, mais pas sur les autres... Dans le click sur les autres éléments du menu, j'ai bien un postback, un page_load mais je m'arrête là, et reste sur la même page...

    Je suis à votre disposition pour des questions, en espérant qu'un de vous connait le problème, et peut éventuellement m'aider à comprendre comment faire en sorte que cet évènement soit intercepté partout...

  2. #2
    Membre averti
    Inscrit en
    Septembre 2003
    Messages
    60
    Détails du profil
    Informations forums :
    Inscription : Septembre 2003
    Messages : 60
    Par défaut
    Bon,

    à force j'ai trouvé d'où venait le problème...
    Voici ma solution pour ceusse que cela intéresse.

    En utilisant un sitemapdatasource et pour éviter que l'url soit utilisé comme navigateurl j'ai redéfini le databinding de cette manière
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
        <DataBindings>
            <asp:MenuItemBinding DataMember="SiteMapNode" TextField="Title" 
                ValueField="Url" />
        </DataBindings>
    Seulement la value doit également être unique dans un menu (chose que je n'ai vu nulle part sauf en réponse à un problème équivalent au mien sur un forum)... et une value vide (certains de mes menu items sont juste des catégories et n'ont pas de liens) est une value...

    Donc mes liens sous mon premier niveau (value vide) marchait bien, alors que les liens sous le second niveau (value vide également) ne retournait rien...

    Il m'a suffit de m'abonner à l'évènement onmenuitemdatabound et de forcer les values vide avec des guid, et hop mes évènements marchait 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
            protected void SMenu_MenuItemDataBound(object sender, MenuEventArgs e)
            {
                if (string.IsNullOrWhiteSpace(e.Item.Value))
                {
                    this.FixUniqueValue(e.Item);
                    //    e.Item.Selectable = false;
                }
            }
     
            /// <summary>
            /// A value for a menuItem must be unique
            /// As we use url as value, and some item has no value
            /// we add a guid in value
            /// </summary>
            /// <param name="menuItem"></param>
            private void FixUniqueValue(MenuItem menuItem)
            {
                string id = Guid.NewGuid().ToString();
                menuItem.Value = id;
            }

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. asp:Menu qui change de style en debug ou en production
    Par narfight dans le forum ASP.NET
    Réponses: 0
    Dernier message: 10/10/2011, 15h27
  2. Réponses: 1
    Dernier message: 28/06/2007, 12h41
  3. Réponses: 7
    Dernier message: 27/07/2006, 23h09
  4. [MySQL] Créer un menu déroulant sans inclure ce qui est dans la bdd
    Par sebmill dans le forum PHP & Base de données
    Réponses: 4
    Dernier message: 11/03/2006, 20h39

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