Verwenden einer benutzerdefinierten Datenquelle für die Navigation

Letzte Änderung: Montag, 1. November 2010

Gilt für: SharePoint Foundation 2010

Das Chrom für eine Microsoft SharePoint Foundation-Website enthält mehrere Navigationssteuerelemente, die an Datenquellensteuerelemente gebunden sind. Das Datenquellensteuerelement hat in jedem Fall die Funktion, Siteübersichtsknoten oder sonstige Navigationsdaten von einem Navigationsanbieter abzurufen und die Daten dann zum Anzeigen an das Navigationssteuerelement zu übergeben.

Einige der Datenquellensteuerelemente für integrierte Navigationssteuerelemente können Sie durch benutzerdefinierte Steuerelemente ersetzen. Für diese Art von Anpassung müssen Sie keine Gestaltungsvorlagen ändern oder benutzerdefinierte Inhaltsseiten bereitstellen. Die Ersetzung basiert vollständig auf in einem SharePoint Foundation-Feature deklarierten Anweisungen. Weitere Informationen zum Erstellen und Bereitstellen von Features finden Sie unter Verwenden von Features.

Anpassbare Datenquellen

Auf den mit SharePoint Foundation installierten Gestaltungsvorlagen werden die Datenquellensteuerelemente für drei wichtige Navigationssteuerelemente als Stellvertretungs-Steuerelemente deklariert, wodurch die Datenquellen für die Stellvertretungsersetzung ausgewählt werden können. Sie können eine benutzerdefinierte Datenquelle für die folgenden Navigationssteuerelemente ersetzen:

  • Leiste für häufig verwendete Hyperlinks

  • Schnellstartleiste

  • Strukturansicht

Zum Ersetzen der Standarddatenquelle für eines dieser Steuerelemente müssen Sie ein Feature erstellen und in einer Farmlösung bereitstellen. Als Ersatz können Sie eines der Datenquellensteuerelemente von SharePoint Foundation oder Microsoft .NET Framework oder aber ein von Ihnen entworfenes benutzerdefiniertes Datenquellensteuerelement verwenden. Wenn Sie ein eigenes Datenquellensteuerelement erstellen, muss die kompilierte Assembly von dem Feature, mit dem die Stellvertretungsersetzung deklariert wird, oder durch einen anderen Prozess im globalen Assemblycache installiert werden. Für das benutzerdefinierte Steuerelement ist außerdem ein SafeControl-Eintrag in der Datei web.config erforderlich. Weitere Informationen finden Sie unter Vorgehensweise: Anpassen eines Stellvertretungs-Steuerelements.

Funktionsweise der Steuerelementersetzung

Ein Stellvertretungs-Steuerelement definiert, wie das auch bei einem Platzhaltersteuerelement der Fall ist, einen Bereich einer Gestaltungsvorlage, der durch anderen Inhalt ersetzt werden kann. In diesem Fall ist das Datenquellensteuerelement der Standardinhalt, der zur Laufzeit durch ein Ersatzsteuerelement ersetzt werden kann.

Beispielsweise wird mit dem folgenden Auszug aus v4.master ein AspMenu-Steuerelement für die Leiste für häufig verwendete Hyperlinks sowie ein DelegateControl-Steuerelement als Datenquelle für das Menü deklariert. Der Standardinhalt für die Stellvertretung ist ein SiteMapDataSource-Steuerelement.

<SharePoint:AspMenu
    ID="TopNavigationMenuV4"
    Runat="server"
    EnableViewState="false"
    DataSourceID="topSiteMap"
    AccessKey="1"
    UseSimpleRendering="true"
    UseSeparateCss="false"
    Orientation="Horizontal"
    StaticDisplayLevels="2"
    MaximumDynamicDisplayLevels="1"
    SkipLinkText=""
    CssClass="s4-tn"/>
<SharePoint:DelegateControl 
    runat="server" 
    ControlId="TopNavigationDataSource" 
    Id="topNavigationDelegate">
    <Template_Controls>
        <asp:SiteMapDataSource
            ShowStartingNode="False"
            SiteMapProvider="SPNavigationProvider"
            id="topSiteMap"
            runat="server"
            StartingNodeUrl="sid:1002"/>
    </Template_Controls>
</SharePoint:DelegateControl>

Wie bei einem Platzhaltersteuerelement kann der Standardinhalt eines Stellvertretungs-Steuerelements durch benutzerdefinierten Inhalt ersetzt werden, in diesem Fall durch ein anderes Steuerelement. Im Gegensatz zu einem Platzhaltersteuerelement wird jedoch bei einem Stellvertretungs-Steuerelement der Standardinhalt nicht durch Hinzufügen von Markup zu einer Inhaltsseite überschrieben. Stattdessen nehmen Sie die Ersetzung vor, indem Sie eine Farmlösung mit einem Feature bereitstellen, welches das Steuerelement, das Sie ersetzen möchten, und das Ersatzsteuerelement identifiziert.

Die Vorgehensweise zum Implementieren eines Features für die Stellvertretungsersetzung wird unter Vorgehensweise: Anpassen eines Stellvertretungs-Steuerelements ausführlich beschrieben. Kurzum fügen Sie Ihrem Feature ein Elementmanifest hinzu, und im Manifest deklarieren Sie ein Control-Element, mit dem das Stellvertretungs-Steuerelement sowie die Assembly und die Klasse des Ersetzungskandidaten identifiziert werden.

Beispielsweise wird mit dem folgenden XML die Datenquelle für die Leiste für häufig verwendete Hyperlinks durch das benutzerdefinierte Datenquellensteuerelement Contoso.NavigationDataSource ersetzt.

<?xml version="1.0" encoding="utf-8"?>
<Elements xmlns="https://schemas.microsoft.com/sharepoint/">
  <Control Id="TopNavigationDataSource"Sequence="50"
    ControlClass="Contoso.NavigationDataSource"
    ControlAssembly="Contoso, Version=1.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
    <Property Name="SiteMapProvider">SPNavigationProvider</Property>
    <Property Name="ID">topSiteMap</Property>
  </Control>
</Elements>

Das ControlId-Attribut im Stellvertretungs-Steuerelement hat den Wert TopNavigationDataSource. Deshalb muss das Id-Attribut des Control-Elements ebenfalls den Wert TopNavigationDataSource haben. Dadurch wird das benutzerdefinierte Steuerelement mit der Zielstellvertretung verknüpft.

Mit dem ControlClass-Attribut und dem ControlAssembly-Attribut des Control-Elements wird SharePoint Foundation angewiesen, wo sich das Kandidatensteuerelement befindet. Die signierte Assembly, die Code für das Steuerelement enthält, muss im globalen Assemblycache installiert werden.

Ein wichtiger Bestandteil des Beispielmarkups ist das Property-Element, mit dem das ID-Attribut des Kandidatensteuerelements auf topSiteMap festgelegt wird. Derselbe Wert wird vom AspMenu-Steuerelement für das DataSourceID-Attribut verwendet. Zur Laufzeit wird das Menüsteuerelement an ein Datenquellensteuerelement mit dieser ID gebunden. Ziel ist es, dass anstelle des Standardsteuerelements das benutzerdefinierte Steuerelement gefunden wird. Das benutzerdefinierte Steuerelement muss natürlich von der HierarchicalDataSourceControl-Klasse abgeleitet werden, da dies vom AspMenu-Steuerelement in einer Datenquelle erwartet wird.

Es ist möglich, dass mehrere Features dasselbe Stellvertretungs-Steuerelement als Ziel haben. Zur Behebung von Konflikten muss für jedes Feature eine Sequenznummer für den Ersetzungskandidaten angegeben und die Priorität der Kandidaten eingerichtet werden. Zur Laufzeit akzeptiert das Stellvertretungs-Steuerelement die Vereinigung von Steuerelementen, die auf Serverfarm-, Webanwendungs-, Websitesammlungs- und Websiteebene deklariert sind. Das Steuerelement mit der niedrigsten Sequenznummer wird der Steuerelementstruktur hinzugefügt. Bei gleichlautenden Sequenznummern ist die Reihenfolge der Steuerelemente beliebig.

Im Beispielmarkup für das Contoso.NavigationDataSource-Steuerelement hat das Sequence-Attribut den Wert 50. Die Sequenznummer für das standardmäßige Datenquellensteuerelement wird zwar nicht durch das Markup offengelegt, aber man kann sicher davon ausgehen, dass sie höher als 100 ist. Wenn das Contoso-Steuerelement der einzige Kandidat für die Ersetzung ist, wird die Standarddatenquelle ersetzt.

Siehe auch

Aufgaben

Vorgehensweise: Anpassen eines Stellvertretungs-Steuerelements

Gewusst wie: Anpassen der Anzeige der Schnellstartleiste

Konzepte

Navigationssteuerelemente

Stellvertretungs-Steuerelement (Erstellen von Vorlagen für Steuerelemente)

Gewusst wie: Freigeben der Leiste für häufig verwendete Hyperlinks zwischen Websites