L'intero sistema di navigazione di Sharepoint è completamente esposto attraverso il suo relativo modello ad oggetti. Abbiamo infatti un nuovo namespace, dalla versione 3.0 di Windows Sharepoint Services, in grado di manipolare i nodi di navigazione dei nostri siti. Il namespace in questione è il Microsoft.Sharepoint.Navigation; al suo interno, troviamo queste principali classi:
- SPNavigation - che rappresenta il sistema di navigazione di un sito
- SPNavigationNode - che rappresenta un singolo nodo di una barra di navigazione
- SPNavigationNodeCollection - che rappresenta una collezione di nodi di navigazione
using(SPWeb web = SPControl.GetContextWeb(Context))
{
//aggiungo degli item alla navigazione SPNavigationNodeCollection quicklaunch = web.Navigation.QuickLaunch;
SPNavigationNodeCollection navbar = web.Navigation.TopNavigationBar;
SPNavigationNode peppe = new SPNavigationNode("PeppeDotNet", "http://www.peppedotnet.it");
quicklaunch.AddAsFirst(peppe);
navbar.AddAsLast(peppe);
SPNavigationNode prevNode = web.Navigation.GetNodeByUrl("http://localhost/SubSite");
navbar.Add(peppe, prevNode);
}
Come potete vedere, possiamo recupare le collezioni di nodi relative alla barra di navigazione e alla quicklaunch bar, attraverso le relative proprietà esposte dalla classe SPNavigation. Poi possiamo aggiungere dei nodi alla navigazione, sfruttando uno di questi metodi della classe SPNavigationNodeCollection:
- AddAsFirst - Aggiunge un nodo all'inizio della collezione
- AddAsLast - Aggiunge un nodo alla fine della collezione
- Add - Aggiunge un nodo, subito prima di un nodo di riferimento
using(SPWeb web = SPControl.GetContextWeb(Context))
{
SPList list = web.Lists["MyList"];
SPNavigationNode rootList = web.Navigation.GetNodeByUrl(list.DefaultViewUrl);
foreach (SPView view in list.Views)
{
SPNavigationNode node = new SPNavigationNode(view.Title, view.Url, false);
rootList.Children.AddAsFirst(node);
}
}
In questo modo, abbiamo aggiunto dei sub-menu alla voce relativa ad una specifica lista, in modo tale da inserire nella struttura di navigazione anche le sue viste.
Veramente utile !