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.
![]() |
---|
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