Freigeben über


XsltListViewWebPart und benutzerdefinierte Listenansichten

Letzte Änderung: Donnerstag, 21. Oktober 2010

Gilt für: SharePoint Foundation 2010

Die neue XsltListViewWebPart-Klasse in Microsoft SharePoint Foundation 2010 leitet sich von der XSL-basierten DataFormWebPart-Klasse ab. Sie ersetzt die ListViewWebPart-Klasse als Standardansichtstyp in Listenansichten, obwohl sie identischen HTML-Code für dieselben Ansichtseinstellungen generiert. Gleichermaßen ersetzt die XsltListFormWebPart-Klasse die ListFormWebPart-Klasse als Standardansichtstyp in Formularen für Listenelemente. Anders als die ListViewWebPart-Klasse verwendet die XsltListViewWebPart-Klasse XSLT-Transformationen zum Definieren des HTML-Renderings und nicht die HTML-Renderingelemente des Ansichtsschemas in CAML (Collaborative Application Markup Language). Die XSLT-Dateien, die über die XsltListViewWebPart-Klasse angewendet werden, werden auf jedem Front-End-Webserver zwischengespeichert und unterstützen alle Sprachen anstatt nur eine Sprache pro XSLT-Datei. Dies bietet ein höheres Maß an Skalierbarkeit in SharePoint Foundation, da jede XSLT-Datei kompiliert wird und nur eine kleine Menge an Serverressourcen beansprucht. Darüber hinaus verwendet die XsltListViewWebPart-Klasse ASP.NET AJAX, um Ad-hoc-Filter anzuwenden, anstatt den in CAML verwendeten IFrame-Ansatz zu nutzen. Die Ausgabe der XSLT-Transformationen, die über die XsltListViewWebPart-Klasse angewendet werden, erfolgt in XHTML. Unabhängig davon, ob sie in Listenansichten oder Formularen für Listenelemente verwendet werden, bieten die XsltListViewWebPart-Klasse und XSLT-Vorlagen das beste Verfahren, um die Anforderungen von ASP.NET AJAX, XHTML und externen Daten für SharePoint Foundation-Ansichten zu erfüllen und gleichzeitig eine einzige anpassbare Ansichtstechnologie verwenden zu können.

Sie können Ansichten im Browser über die SharePoint Foundation-Benutzeroberfläche, in Microsoft SharePoint Designer 2010 oder in Microsoft Visual Studio 2010 anpassen. Sie können benutzerdefinierte XSLT in der XsltListViewWebPart-Klasse verwenden, um benutzerdefinierte Listenansichten zu definieren. Die benutzerdefinierte XSLT kann nur bestimmte Vorlagen in den Standard-XSLT-Dateien außer Kraft setzen oder diese Dateien auch vollständig ersetzen. Sie können die benutzerdefinierten XSLT-Dateien entweder im Ordner %ProgramFiles%\Common Files\Microsoft Shared\web server extensions\14\TEMPLATE\FEATURES oder im Ordner %ProgramFiles%\Common Files\Microsoft Shared\web server extensions\14\TEMPLATE\LAYOUTS bereitstellen. Sie können XSLT-basierte Listenansichten im <Views>-Abschnitt der Datei Schema.xml für eine Listendefinition angeben, indem Sie das XslLink-Element in einer Ansichtsdefinition verwenden. Informationen zur Verwendung von XSLT-Vorlagen durch SharePoint Foundation und zu den installierten Standard-XSLT-Dateien finden Sie unter Übersicht über das XSLT-System des Rendering von Listenansichten.

XsltListViewWebPart generiert eine HTML-Ansicht einer Liste anhand von XML-Daten, die durch Ausführen einer im Query-Element der XmlDefinition-Eigenschaft des Webparts definierten Abfrage abgerufen werden. Neben der Abfrage enthält die XmlDefinition-Eigenschaft Beschreibungen der verschiedenen Ansichtsattribute. Dies schließt die zu verwendende zugrunde liegende Ansichtsformatvorlage (z. B. Basic Table oder Boxed), die in der Ansicht anzuzeigenden Felder, die Anzahl der auf einer einzelnen Seite anzuzeigenden Datenzeilen und weitere Einstellungen ein, die in der Datei Schema.xml der Liste angegeben sind. Die Listendefinition in der Datei Schema.xml dient als Quellknotenstruktur für den XSLT-Prozessor, der das Schema analysiert, um die in der XmlDefinition-Eigenschaft enthaltene Ergebnisstruktur zu erstellen.

Die Syntax der XmlDefinition-Eigenschaft basiert auf der in SharePoint Foundation verfügbaren ListViewXml-Eigenschaft der ListViewWebPart-Klasse. Die XsltListViewWebPart-Klasse verwendet die Abfragebeschreibung in der XmlDefinition-Eigenschaft, um ein SPDataSource-Steuerelement zu erstellen, und ruft Daten als XML ab. Anschließend führt das Webpart eine XSLT-Transformation für die XML-Daten aus und verwendet hierfür Parameter, die das Listenschema und die XmlDefinition-Ansichtsbeschreibung einschließen. Die XSLT ist schemaunabhängig, was bedeutet, dass sie sich an das Schema der Liste anpasst, auf die verwiesen wird. Sie können Felder hinzufügen oder entfernen oder ihren Typ ändern; die XSLT rendert die Ansicht weiterhin wie vorgesehen. Die XSLT passt sich an die in der XmlDefinition-Eigenschaft angegebenen Ansichtseinstellungen an, z. B. im Hinblick auf die Ansichtsformatvorlage. Sie verwendet <xsl:apply-templates>, um alle Datenzeilen und jedes Ansichtsfeld so wie in der Ansichtsformatvorlage und im Listenschema definiert zu durchlaufen. Die entsprechenden XSLT-Vorlagen generieren eine HTML-Ausgabe, die dann an den Browser gesendet wird. Informationen zur Verwendung von dsQueryResponse-XML in XSLT-Listenansichten, um XML-Daten zu rendern, finden Sie unter Beispiele von Eingabe- und Ergebnisknotenstrukturen bei XSLT-Transformationen.

Wenn Sie die Benutzeroberfläche von SharePoint Foundation verwenden, um eine Ansicht im Browser zu ändern, werden die deklarativen Einstellungen der XmlDefinition-Eigenschaft des Webparts innerhalb seiner Webpartzone geändert. Dies bewirkt, dass das Webpart HTML-Code generiert, der mit der ListViewWebPart-Klasse von SharePoint Foundation identisch ist. Sie können das Webpart in SharePoint Designer weiter anpassen. Eine Konvertierung ist hierfür nicht notwendig, und Sie können auch weitere Änderungen im Browser vornehmen. Die XSLT für das Webpart bleibt unverändert und an einem schreibgeschützten Ort auf dem Front-End-Webserver zwischengespeichert und wird von allen XsltListViewWebPart-Steuerelementen wiederverwendet. Änderungen, die Sie in SharePoint Designer vornehmen, setzen die zwischengespeicherte XSLT außer Kraft und werden in die Xsl-Eigenschaft des Webparts geschrieben. SharePoint Foundation nutzt die Vorrangsregeln für Importvorgänge und den Vorlagenabgleich in XSLT, um nur angegebene Vorlagen außer Kraft zu setzen. Hierdurch ist es Ihnen möglich, genau abgestimmte Änderungen an dem generierten HTML-Code vorzunehmen, ohne die Front-End-XSLT-Dateien zu verändern oder die Änderungen in das Webpart zu kopieren. Nur die außer Kraft gesetzten Vorlagen werden in der Xsl-Eigenschaft des Webparts gespeichert.

Ableitung von "XsltListViewWebPart"

Die XsltListViewWebPart-Klasse erbt von der DataFormWebPart-Klasse gemäß der folgenden Hierarchie:

Object

  Control

    WebControl

      Panel

        Part

          WebPart

            WebPart

              BaseXsltDataWebPart

                DataFormWebPart

                  BaseXsltListWebPart

                    XsltListViewWebPart

Geerbte Eigenschaften

Die XsltListViewWebPart-Klasse erbt viele Member aus der DataFormWebPart-Klasse. Dies umfasst u. a. die in der folgenden Tabelle aufgeführten Member. In der Tabelle wird angegeben, ob das XML-Äquivalent für die einzelnen Eigenschaften als Element oder Attribut weiterbesteht.

Eigenschaftenname

XML-Persistenz

Beschreibung

DataSources

Element

Optional. Gibt ein DataSourceCollection-Objekt an, das IDataSource-Schnittstellen darstellt. Normalerweise wird stattdessen die XmlDefinition-Eigenschaft verwendet, um ein Datenquellen-Steuerelement (SPDataSource) synthetisieren, wenn die Ansicht gerendert wird. Wenn die Eigenschaft in XsltListViewWebPart vorhanden ist, wird eine Ausnahme ausgelöst.

ListDisplayName

Attribut

Enthält einen Listenverweis, der den lokalisierten Anzeigenamen verwendet, z. B. Announcements.

ListName

Attribut

Enthält einen Listenverweis im {GUID}-Format mit derselben Syntax wie das entsprechende ListViewWebPart-Attribut.

ListUrl

Attribut

Enthält einen Listenverweis im URL-Format, der relativ zu der Website ist, z. B. Lists/Announcements.

XmlDefinition

Element

Enthält ein gültiges View-Element, das dieselbe Syntax aufweist, die von der in SharePoint Foundation verfügbaren ListViewWebPart-Klasse unterstützt wurde, jedoch ohne die CAML-Renderingtags (siehe XMLDefinition- und CAML-Ansichtsschema).

XmlDefinitionLink

Attribut

Gibt einen URL-Verweis auf eine XML-Datei an, die den Inhalt der XmlDefinition-Eigenschaft definiert.

Xsl

Element

Optional. Enthält eine Inlineformatvorlage.

XslLink

Element

Optional. Enthält eine URL, die eine für die Transformation zu verwendende XSLT-Datei angibt..

Eine der List*-Eigenschaften (ListName, ListUrl oder ListDisplayName) muss vorhanden sein und muss einen Verweis auf eine gültige Liste angeben. Wenn mehr als eine Eigenschaft vorhanden ist, gilt für die Auswertung folgende Reihenfolge: ListName, ListUrl und dann ListDisplayName.

Wenn eine der XmlDefinition*-Eigenschaften (XmlDefinition oder XmlDefinitionLink) vorhanden ist, muss sie ein gültiges View-Element ergeben. Andernfalls wird stattdessen die Ansichtsdefinition aus der Standardansicht der Liste verwendet (mit anderen Worten aus Schema.xml). Wenn mehr als eine Eigenschaft vorhanden ist, gilt für die Auswertung die folgende Reihenfolge: XmlDefinitionLink und dann XmlDefinition.

Wie bei der Xsl-Eigenschaft und der XslLink-Eigenschaft der DataFormWebPart-Klasse wird zuerst XslLink und dann XSL ausgewertet. Wenn weder XSL noch XslLink angegeben wird, wird die XSLT-Datei, auf die im View-Element in Schema.xml verwiesen wird, für die Transformation verwendet. Das Vorhandensein einer XSL- oder XslLink-Eigenschaft zeigt an, dass die Ansicht in SharePoint Designer angepasst wurde, um die standardmäßige zwischengespeicherte und nicht angepasste XSLT außer Kraft zu setzen. Die XSL-Eigenschaft wird nie über die SharePoint Foundation-Benutzeroberfläche, sondern nur über SharePoint Designer geändert, wenn explizite Formatierungsaktionen stattfinden (im Gegensatz zur Änderung von Abfragen). Für eine bedingte Formatierung in SharePoint Designer müssen Sie beispielsweise den Inhalt von XSL aktualisieren, beim Hinzufügen oder Entfernen von Spalten ist dies jedoch nicht der Fall.

Die GetDataSource()-Methode der XsltListViewWebPart-Klasse setzt die GetDataSource()-Methode der DataFormWebPart-Klasse außer Kraft. Die XsltListViewWebPart-Klasse löst zuerst den Listenverweis auf und erstellt dann ein Datenquellen-Steuerelement (SPDataSource) basierend auf dem Inhalt der XmlDefinition-Eigenschaft.

Siehe auch

Konzepte

Übersicht über das XSLT-System des Rendering von Listenansichten

Beispiele von Eingabe- und Ergebnisknotenstrukturen bei XSLT-Transformationen

XMLDefinition- und CAML-Ansichtsschema

Gewusst wie: Anpassen des Renderings eines Felds in einer Listenansicht

Vorgehensweise: Implementieren von Ressourcen in benutzerdefinierten Listenansichten