none
[MOSS 2007] [FR] Accès à la TopNavigationBar RRS feed

  • Question

  • Bonjour à tous,

    Je m'excuse d'avance si un sujet déjà créé parle de mon problème, mais je n'en ai pas trouvé.

    J'aimerais créer un WebControl personnalisé dans lequel s'afficherait la liste de tous les sous liens du site actuel. Pour cela, j'essaie de récupérer la TopNavigationBar et ses objets en y accédant par l'intermédiaire de cette commande :

    SPNavigationNodeCollection nnc = Navigation.GetContextWeb(HttpContext.Current).Navigation.TopNavigationBar;

    Mon problème est que l'objet ainsi récupéré est vide, ou plutôt ne contient aucun élément. En effet, en essayant d'afficher le nombre d'éléments contenu dedans, celui-ci est égal à 0.

    D'où pourrait venir le problème ?

    Merci d'avance pour votre aide.
    mardi 22 juillet 2008 15:46

Toutes les réponses

  • Bonjour

    Etes-vous dans un site de type publication ? Car la gestion des liens ne se fait pas de la même manière dans les sites collaboratifs ou dans les sites de publications.

    Vous devriez dans ce cas regarder du côté des site map providers (de tête ça devriat être le "GlobalNavSiteMapProvider" qui vous intéresse). Vous pouvez jeter un coup d'oeil à tout ça ici : http://ktskumar.wordpress.com/2008/04/14/sharepoint-navigation-providers-part-1/
    vendredi 25 juillet 2008 10:40
  •  

    Ce lien devrait vous aider

    http://www.sharepointblogs.com/tbaginski/archive/2007/12/26/how-to-programmatically-customize-site-navigation-in-wss-3-0-and-moss-2007.aspx

     

    Essayer donc avec

     

    SPWeb topNavigationWeb = SPContext.Current.Site.OpenWeb();

    SPNavigationNodeCollection topNavigationBarNodes = topNavigationWeb.Navigation.TopNavigationBar;

    topNavigationWeb.Dispose();

    vendredi 25 juillet 2008 11:31
  • Tout d'abord, merci pour vos aides respectives.

    Malheureusement le code que vous m'avez passé ne fonctionne pas plus, et les informations disponibles au lien que vous avez marqué concernent l'ajout et la suppression d'éléments, pas la consultation simple. Même après essais, aucune différence :/

    Je vais donc voir du côté des site provider de quoi il en retourne.

    Je tiens à signaler que le WebControl doit pouvoir fonctionner aussi bien sur un site de publication que sur un site qui ne l'est pas.

    Encore merci pour vos aides respectives.
    lundi 28 juillet 2008 13:20
  • La c'est nous qui sommes surpris

     

    Le code que nous vous donnons est du code de base de la plateforme, il ne manque que la notion de publishing mais la ca devient spécifique MOSS

     

    Si votre WebControl doit être 100% independant vous n'avez donc que 2 choix !

     

    Créer votre propre menu indépendant de SharePoint mais dans ce cas la, vous ne beneficiez pas vraiment de la plateforme ce qui est un peu dommage

     

    Créer votre propre provider de navigation (attention a la gestion du cache !!!! pas si facile à faire) et remplacer ceux de MOSS pour utiliser le votre en lieu et place

     

    Bref, vous intégrez un peu en force, ce qui est souvent source de probléme de flexibilité en cas d'evolution

     

    Bon courage

    lundi 28 juillet 2008 14:31

  • Le WebControl doit en fait pouvoir marcher sur un site non de type publication mais quand même sous site d'un site de publication, et en essayant avec la méthode des NavigationProvider, j'arrive enfin à récupérer ce que je veux, donc tout va bien =)
    En revanche l'accès à la topnavigationbar est en effet bizarre, puisque ça me semblait aussi être natif...

    Merci en tout cas pour votre aide =)
    mardi 29 juillet 2008 09:51
  • Bonjour,

    Regardez cela :

     - http://blogs.developpeur.org/fabrice69/archive/2008/07/29/sharepoint-comment-mettre-en-place-la-navigation-du-haut-sur-plusieurs-niveaux-dans-wss.aspx

     

    Ceci est pour le cas de WSS, mais sous MOSS, suivant le type de site choisi, la datasource de l'aspmenu n'est pas la même.

     

    Une solution simple est de regarder dans le code de la Master Page pour voir ce qui est utilisé pour votre page spécifique.

     

    Cordialement

     

    Romelard Fabrice [MVP]

     

    mercredi 30 juillet 2008 11:16
  • Bonjour,

    Je recommence à poster sur ce sujet tout simplement parce que le résultat ne correspond pas au but voulu.

    En effet, le rappel du sous menu se fait bien dans le contrôle web que j'ai créé, puisque j'ai accès à tous les sous sites ou à tous les sites "frères" du site courant, par l'intermédiaire de

    PortalSiteMapProvider.GlobalNavSiteMapProvider

    Le problème est que la liste de ces sites ne tient pas compte de l'ordre dans lequel l'utilisateur les place. c'est à dire qu'il ne suivra pas exactement le menu de la TopNavigationBar selon les modifications effectués par l'utilisateur.

    Quelqu'un aurait une idée de l'objet ou de la méthode à appeler afin de rapatrier les sites dans l'ordre dans lesquels ils sont effectivement affichés ?

    Merci d'avance pour votre aide.

    Floran
    lundi 22 septembre 2008 14:47