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 :

Comment utiliser une image à la place du texte d'un controle menu ?


Sujet :

ASP.NET

  1. #1
    Nouveau membre du Club
    Inscrit en
    Juillet 2007
    Messages
    48
    Détails du profil
    Informations forums :
    Inscription : Juillet 2007
    Messages : 48
    Points : 28
    Points
    28
    Par défaut Comment utiliser une image à la place du texte d'un controle menu ?
    Bonjour,

    Débutant en ASP.NET j'aimerais remplacer les textes des items du contrôle menu (lié à un sitemap) par des images.
    J'ai cherché sur Google et sur ce forum mais n'ai rien trouvé

    Déjà, y a t'il moyen ?

    Merci d'avance pour votre aide.

  2. #2
    Rédacteur
    Avatar de Louis-Guillaume Morand
    Homme Profil pro
    Cloud Architect
    Inscrit en
    Mars 2003
    Messages
    10 839
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Cloud Architect
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2003
    Messages : 10 839
    Points : 28 254
    Points
    28 254
    Par défaut
    tu vois bien que le texte affiché est le texte qu'il va cherché dans le sitemap. puisque tu n'as aucun attribut image dans le sitemap, comment espères-tu qu'il puisse le faire? il ne peut pas "deviner" quoi afficher



    Le seul moyen c'est de développer ton custom menu. Un parseur xml, qui dessiner du XHTML, avec tout ce que tu veux dessus (jquery, css, etc). c'est très basique à faire.

  3. #3
    Nouveau membre du Club
    Inscrit en
    Juillet 2007
    Messages
    48
    Détails du profil
    Informations forums :
    Inscription : Juillet 2007
    Messages : 48
    Points : 28
    Points
    28
    Par défaut
    Merci Louis-Guillaume pour ta réponse.
    J'men doutais un peu mais étant novice en ASP.NET ...

    Je dois donc développer un custom menu avec parseur xml ...
    ... Si tu le sens de me donner une méthode n'hésite pas (les grandes lignes, j'vais tenter de le faire)

  4. #4
    Rédacteur
    Avatar de Louis-Guillaume Morand
    Homme Profil pro
    Cloud Architect
    Inscrit en
    Mars 2003
    Messages
    10 839
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Cloud Architect
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2003
    Messages : 10 839
    Points : 28 254
    Points
    28 254
    Par défaut
    c'est très simple, tu fais un custom control, qui lis le sitemap. et qui fait des Response.Write pour générer du XHTML ou alors, tu places le XHTML généré dans un Literal. c'est basique mais parfois pour obtenir que ce tu veux c'est la meilleure solution.

    J'ai par exemple dû en créer un pour tous les projets de mon équipe afin d'avoir un menu respectant la charte graphique, incluant du jquery et mettant en gras l'élément correspondant à la page en cours en se basant sur une partie de l'URL.


    Voici une partie de mon code, ne le copie pas, je n'y ai pas mis toutes les méthodes et surtout il est customisé pour utiliser du javascript mais ca te montrera les grandes lignes
    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
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    /// <summary>
            /// On dessine le menu à partir d'un menu déjà fourni
            /// </summary>
            /// <param name="menuHTML"></param>
            public void drawMenu(String menuHTML)
            {
                Literal1.Text = String.Format("<div id='divMenuCtrl'><table >{0}</table ></div>", menuHTML);
                selectNode();
            }
     
            /// <summary>
            /// On dessine le menu en fonctions des droits que l'on lui donne
            /// </summary>
            public void drawMenu(Object usr)
            {
                string menuHTML = String.Empty;
                int countRoot = 0;
                int countChild1 = 0;
                int countChild2 = 0;
                foreach (SiteMapNode node in SiteMap.RootNode.ChildNodes)
                {
                    if (checkRole(node, usr))
                    {
                        menuHTML += drawRootMenu(node.Title, countRoot);
                        if (node.HasChildNodes)
                        {
                            menuHTML += String.Format("<tr id='mnu{0}' runat='server'><td><ul>", countRoot);
                        }
                        foreach (SiteMapNode node1 in node.ChildNodes)
                        {
                            if (checkRole(node1, usr))
                            {
                                if (node1.Description != "invisible")
                                    menuHTML += drawChildMenu(node1.Title, countRoot, countChild1, null, node1.Url,
                                                              node1.HasChildNodes);
                                if (node1.HasChildNodes)
                                {
                                    menuHTML += "<ul>";
                                }
                                foreach (SiteMapNode node2 in node1.ChildNodes)
                                {
                                        if (node2.Description != "invisible")
                                            menuHTML += drawChildMenu(node2.Title, countRoot, countChild1, countChild2,
                                                                      node2.Url, node2.HasChildNodes);
                                    countChild2++;
                                }
                                if (node1.HasChildNodes)
                                {
                                    menuHTML += "</ul>";
                                }
     
                            }
                            countChild1++;
                        }
                        if (node.HasChildNodes)
                        {
                            menuHTML += "</ul></td></tr>";
                        }
                    }
                    countRoot++;
                }
                menuHTML+=String.Format(
                        "<tr class='inter'><td></td></tr><tr id='rootMnu{0}' runat='server' class='rootMenuOff'><td > <a href='{2}'>{1}</a> </td> </tr>",
                        9999, "LogOut", ResolveUrl("~/Common/LogOut.aspx"));
     
                Literal1.Text = String.Format("<div id='divMenuCtrl'><table >{0}</table ></div>", menuHTML);
                selectNode();
            }
     
            /// <summary>
            /// Dessine un noeud enfant
            /// </summary>
            /// <param name="Label">Texte affiché par le menu</param>
            /// <param name="rootId">Id de la catégorie</param>
            /// <param name="id">Id du menu</param>
            /// <param name="id2">Id du menu de second niveau</param>
            /// <param name="url">Lien du menu</param>
            /// <param name="childs">Définie si des enfants existent</param>
            /// <returns></returns>
            private static string drawChildMenu(string Label, int rootId, int id, int? id2, string url, bool childs)
            {
                if (childs)
                    return
                        String.Format(
                            "<li><a id='li{1}_{2}' onClick='javascript:toggle({1},{2}{4})' href='{3}'>{0}</a></li>", Label,
                            rootId, id, (String.IsNullOrEmpty(url)) ? "#" : url, (id2 == null) ? "" : "," + id2);
     
                return String.Format("<li><a id='li{1}_{2}{4}' href='{3}'>{0}</a></li>", Label, rootId, id, url,
                                     (id2 == null) ? "" : "_" + id2);
            }
     
            /// <summary>
            /// dessine le tableau du menu root
            /// </summary>
            /// <param name="Label">Texte affiché par la catégorie</param>
            /// <param name="id">Id de la categorie</param>
            /// <returns></returns>
            private static string drawRootMenu(string Label, int id)
            {
                return
                    String.Format(
                        "<tr class='inter'><td></td></tr><tr id='rootMnu{0}' runat='server' class='rootMenuOff'><td > <a href='javascript:toggle({0});'>{1}</a> </td> </tr>",
                        id, Label);
            }

  5. #5
    Nouveau membre du Club
    Inscrit en
    Juillet 2007
    Messages
    48
    Détails du profil
    Informations forums :
    Inscription : Juillet 2007
    Messages : 48
    Points : 28
    Points
    28
    Par défaut
    Merci pour ton aide
    Je vais essayer cela

Discussions similaires

  1. Comment centrer une image et encadrer du texte ?
    Par asphalte01 dans le forum VBA Word
    Réponses: 2
    Dernier message: 03/03/2009, 13h27
  2. [GD] Comment créer une image à partir d'un texte ?
    Par Alexandrebox dans le forum Bibliothèques et frameworks
    Réponses: 7
    Dernier message: 11/02/2008, 05h33
  3. Réponses: 1
    Dernier message: 17/05/2006, 10h19
  4. Réponses: 4
    Dernier message: 08/05/2006, 21h12
  5. Utiliser une image à la place du curseur par défaut
    Par nice dans le forum Interfaces Graphiques en Java
    Réponses: 3
    Dernier message: 11/12/2005, 23h15

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