Freigeben über


Anpassen von Navigationssteuerelementen und Anbietern

Letzte Änderung: Sonntag, 4. April 2010

Gilt für: SharePoint Server 2010

Zum Anpassen der Navigation sollten Sie die ASP.NET-Sitenavigation verwenden, da es sich hierbei um eine standardmäßige, einheitliche und einfach zu handhabende Lösung handelt. Weitere Informationen finden Sie im Microsoft ASP.NET Developer Center auf MSDN.

Anpassen von Webanzeigesteuerelementen ("Menu", "TreeView" und "SiteMapPath")

Das Erscheinungsbild standardmäßiger Anzeigesteuerelemente kann mithilfe von Cascading Stylesheets (CSSs) angepasst werden. Sie können auch eigene ASP.NET-Steuerelemente erstellen und für die -Navigation verwenden. Weitere Informationen finden Sie in der Dokumentation zur System.Web.UI.WebControls.Menu-Klasse.

HinweisHinweis

In SharePoint Server 2010 gibt es auch anpassbare Standardnavigationskomponenten, wie z. B. das Webpart für Inhaltsabfragen (Content By Query Web Part, CQWP) und das Inhaltsverzeichnis-Webpart. Diese beiden Steuerelemente können Sie so konfigurieren, dass eine benutzerdefinierte Auswahl von Links angezeigt wird.

Die Navigationssteuerelemente System.Web.UI.WebControls.TreeView und System.Web.UI.WebControls.Menu werden an ASP.NET -Datenquellen gebunden und stellen eine abstrakte Ebene zwischen den Webnavigationssteuerelementen und dem zugrunde liegenden Navigationsanbieter dar.

Implementieren von Siteübersichtanbietern

Für die Implementierung Ihres eigenen Siteübersichtanbieters können Sie von einem der Standard-Siteübersichtanbieter eine benutzerdefinierte Anbieterklasse ableiten. SharePoint Server 2010 enthält mehrere Standardanbieter. Eine benutzerdefinierte Anbieterklasse können Sie auch von der SiteMapProvider-Klasse im System.Web-Namespace ableiten. Das Ableiten des SharePoint Server 2010-Siteübersichtanbieters bietet jedoch mehrere zusätzliche Vorteile, wie etwa das Zwischenspeichern von Navigationsknoten und die Einschränkung aus Sicherheitsgründen. Deshalb sollten Sie die Infrastruktur für das Zwischenspeichern und die Einschränkung aus Sicherheitsgründen von SharePoint Server 2010 verwenden, anstatt eine eigene Infrastruktur für das Zwischenspeichern und die Einschränkung aus Sicherheitsgründen in einem von den Standardanbietern abgeleiteten benutzerdefinierten Anbieter zu erstellen.

Obwohl die Siteübersichtanbieterklassen über ca. 20 abstrakte oder virtuelle Methoden verfügen, müssen nur wenige überschrieben und in einem benutzerdefinierten Siteübersichtanbieter implementiert werden.

Im folgenden Beispiel wird von der PortalSiteMapProvider-Klasse abgeleitet und veranschaulicht, wie dem Siteübersichtanbieter Elemente hinzugefügt werden.

public class CustomNavProviderWithList : PortalSiteMapProvider
    {
        public override SiteMapNodeCollection GetChildNodes(System.Web.SiteMapNode node)
        {
            PortalSiteMapNode portalNode = node as PortalSiteMapNode;
            if (portalNode != null)
            {
                if (portalNode.Type == NodeTypes.Area)
                {
                 
                    SiteMapNodeCollection nodeColl = base.GetChildNodes(portalNode);
                    using (SPSite currentSite = new SPSite(portalNode.Url))
                     {
                       SPWeb currentWeb = currentSite.OpenWeb();
                       SPListCollection lists = currentWeb.Lists;
                       foreach (SPList list in lists)
                       {
                           string listUrl = list.DefaultViewUrl;
                           PortalSiteMapNode childNode = new PortalSiteMapNode(webNode, listUrl, NodeTypes.custom, list.Title, listUrl, null);
                           nodeColl.Add(childNode);
                    }
                  }
                  return nodeColl;
                }
                else
                {
                    return base.GetChildNodes(portalNode);
                }
            }
            else
            {
                return new SiteMapNodeCollection();
            }
        }
    }
Public Class CustomNavProviderWithList
    Inherits PortalSiteMapProvider
        Public Overrides Function GetChildNodes(ByVal node As System.Web.SiteMapNode) As SiteMapNodeCollection
            Dim portalNode As PortalSiteMapNode = TryCast(node, PortalSiteMapNode)
            If portalNode IsNot Nothing Then
                If portalNode.Type = NodeTypes.Area Then

                    Dim nodeColl As SiteMapNodeCollection = MyBase.GetChildNodes(portalNode)
                    Using currentSite As New SPSite(portalNode.Url)
                       Dim currentWeb As SPWeb = currentSite.OpenWeb()
                       Dim lists As SPListCollection = currentWeb.Lists
                       For Each list As SPList In lists
                           Dim listUrl As String = list.DefaultViewUrl
                           Dim childNode As New PortalSiteMapNode(webNode, listUrl, NodeTypes.custom, list.Title, listUrl, Nothing)
                           nodeColl.Add(childNode)
                       Next list
                    End Using
                  Return nodeColl
                Else
                    Return MyBase.GetChildNodes(portalNode)
                End If
            Else
                Return New SiteMapNodeCollection()
            End If
        End Function
End Class

Siehe auch

Referenz

Microsoft.SharePoint.Publishing.Navigation

Microsoft.SharePoint.Navigation

Konzepte

Gewusst wie: Anpassen der Navigation

Arbeiten mit Menüs und Navigationsobjekten