XsltListViewWebPart et affichages de liste personnalisés

Dernière modification : jeudi 21 octobre 2010

S’applique à : SharePoint Foundation 2010

La nouvelle classe XsltListViewWebPart dans Microsoft SharePoint Foundation 2010 dérive de la classe XSL DataFormWebPart. Elle remplace la classe ListViewWebPart en tant que type d’affichage par défaut dans les affichages de liste, bien qu’elle génère du code HTML équivalent pour les même paramètres d’affichage. De même, la classe XsltListFormWebPart remplace la classe ListFormWebPart comme type d’affichage par défaut dans les formulaires d’élément de liste. À la différence de la classe ListViewWebPart, la classe XsltListViewWebPart utilise des transformations XSLT pour définir le rendu HTML, au lieu d’utiliser les éléments de rendu HTML du schéma d’affichage dans le langage CAML (Collaborative Application Markup Language). Les fichiers XSLT qui sont appliqués par le biais de la classe XsltListViewWebPart sont mis en cache sur chaque serveur Web frontal et ils prennent en charge tous les langages, au lieu d’un seul langage par fichier XSLT. Cela renforce sensiblement l’évolutivité dans SharePoint Foundation, car chaque fichier XSLT est compilé et consomme une faible quantité de ressources serveur. En outre, la classe XsltListViewWebPart recourt à ASP.NET AJAX pour effectuer le filtrage ad hoc, au lieu de l’approche IFrame utilisée dans le langage CAML, et la sortie des transformations XSLT appliquées par le biais de la classe XsltListViewWebPart est du XHTML. Qu’ils se trouvent dans des affichages de liste ou dans des formulaires d’élément, la classe XsltListViewWebPart et les modèles XSLT constituent la meilleure solution pour satisfaire aux contraintes des données ASP.NET AJAX, XHTML et externes pour les affichages SharePoint Foundation, tout en convergeant sur une même technologie d’affichage personnalisable.

Vous pouvez personnaliser les affichages dans le navigateur par le biais de l’interface utilisateur SharePoint Foundation, dans Microsoft SharePoint Designer 2010 ou dans Microsoft Visual Studio 2010. Vous pouvez implémenter du XSLT personnalisé dans la classe XsltListViewWebPart pour définir des affichages de liste personnalisés. Le XSLT personnalisé peut simplement substituer certains modèles dans les fichiers XSLT par défaut ou il peut les remplacer complètement. Vous pouvez déployer les fichiers XSLT personnalisés dans le dossier %ProgramFiles%\Common Files\Microsoft Shared\web server extensions\14\TEMPLATE\FEATURES ou dans le dossier %ProgramFiles%\Common Files\Microsoft Shared\web server extensions\14\TEMPLATE\LAYOUTS. Vous pouvez spécifier des affichages de liste XSLT dans la section <Views> du fichier Schema.xml pour une définition de liste en utilisant l’élément XslLink dans une définition d’affichage. Pour plus d’informations sur la façon dont SharePoint Foundation utilise les modèles XSLT et sur les fichiers XSLT par défaut qui sont installés, voir Vue d’ensemble du système de rendu d’affichage Liste XSLT.

XsltListViewWebPart génère un affichage HTML d’une liste à partir des données XML obtenues en exécutant une requête définie dans l’élément Query de la propriété XmlDefinition du composant WebPart. Outre la requête, la propriété XmlDefinition contient des descriptions de différents attributs d’affichage, dont le style d’affichage sous-jacent à utiliser (par exemple, Basic Table ou Boxed), les champs à présenter dans l’affichage, le nombre de lignes de données à afficher dans une même page et d’autres paramètres spécifiés dans le fichier Schema.xml de la liste. La définition de liste dans le fichier Schema.xml fait office d’arborescence de nœuds sources pour le processeur XSLT, qui analyse le schéma pour créer l’arborescence résultat contenue dans la propriété XmlDefinition.

La syntaxe de la propriété XmlDefinition repose sur la propriété SharePoint FoundationListViewXml de la classe ListViewWebPart. La classe XsltListViewWebPart utilise la description de requête dans la propriété XmlDefinition pour créer un contrôle SPDataSource et récupère les données au format XML. Ensuite, le composant WebPart exécute une transformation XSLT sur les données XML, en utilisant des paramètres qui comprennent le schéma de liste et la description d’affichage XmlDefinition. Le XSLT est indépendant du schéma, ce qui signifie qu’il s’adapte au schéma de la liste référencée. Même si vous ajoutez ou supprimez des champs, ou que vous modifiez leur type, le XSLT restitue l’affichage correctement. Le XSLT s’adapte aux paramètres d’affichage spécifiés dans la propriété XmlDefinition, tels que le style d’affichage. Il utilise <xsl:apply-templates> pour passer en revue chaque ligne de données et chaque champ d’affichage conformément au paramétrage du style d’affichage et du schéma de liste. Les modèles XSLT correspondants génèrent une sortie HTML, qui est ensuite envoyée au navigateur. Pour plus d’informations sur la façon dont le XML dsQueryResponse est utilisé dans les affichages de liste XSLT pour restituer les données XML, voir Exemples d’arborescences de nœuds d’entrée et de résultat dans les transformations XSLT.

Lorsque vous utilisez l’interface utilisateur SharePoint Foundation pour modifier un affichage dans le navigateur, elle modifie les paramètres déclaratifs de la propriété XmlDefinition du composant WebPart dans sa zone de composant WebPart. En conséquence, le composant WebPart génère du HTML équivalent à la classe SharePoint FoundationListViewWebPart. Vous pouvez affiner la personnalisation du composant WebPart dans SharePoint Designer, opération qui ne requiert pas d’étape de conversion et qui ne vous empêche pas d’apporter des modifications supplémentaires dans le navigateur. Le XSLT pour le composant WebPart demeure inchangé et mis en cache dans un emplacement accessible en lecture seule sur le serveur Web frontal et il est réutilisé par tous les contrôles XsltListViewWebPart. Les modifications que vous apportez dans SharePoint Designer substituent le XSLT mis en cache et sont écrites dans la propriété Xsl du composant WebPart. SharePoint Foundation s’appuie sur les règles de précédence d’importation et sur la mise en correspondance des modèles dans le XSLT pour substituer uniquement des modèles spécifiés. Cela vous permet d’apporter des modifications affinées au HTML qui est généré, sans porter atteinte aux fichiers XSLT frontaux ou copier les modifications dans le composant WebPart. Seuls les modèles substitués sont enregistrés dans la propriété Xsl du composant WebPart.

Dérivation de XsltListViewWebPart

La classe XsltListViewWebPart hérite de la classe DataFormWebPart en fonction de la hiérarchie suivante :

Object

  Control

    WebControl

      Panel

        Part

          WebPart

            WebPart

              BaseXsltDataWebPart

                DataFormWebPart

                  BaseXsltListWebPart

                    XsltListViewWebPart

Propriétés héritées

La classe XsltListViewWebPart hérite de nombreux membres de la classe DataFormWebPart, notamment les membres répertoriés dans le tableau suivant. Ce dernier indique si le XML équivalent pour chaque propriété est persistant en tant qu’élément ou attribut.

Nom de la propriété

Persistance XML

Description

DataSources

Élément

Facultatif. Spécifie un objet DataSourceCollection qui représente des interfaces IDataSource. Normalement, la propriété XmlDefinition est utilisée à la place pour synthétiser un contrôle de source de données (SPDataSource) lorsque l’affichage est restitué. Une exception est déclenchée si cette propriété est présente dans la classe XsltListViewWebPart.

ListDisplayName

Attribut

Contient une référence de liste qui utilise le nom d’affichage localisé, telle qu’Announcements.

ListName

Attribut

Contient une référence de liste au format {GUID} avec la même syntaxe que l’attribut ListViewWebPart équivalent.

ListUrl

Attribut

Contient une référence de liste au format URL qui est relative au site Web, telle que Lists/Announcements.

XmlDefinition

Élément

Contient un élément View valide dont la syntaxe est celle qui était prise en charge par la classe SharePoint FoundationListViewWebPart, à l’exception des balises de rendu CAML (voir Schéma d’affichage CAML et XMLDefinition).

XmlDefinitionLink

Attribut

Spécifie une référence d’URL à un fichier XML qui définit le contenu de la propriété XmlDefinition.

Xsl

Élément

Facultatif. Contient une feuille de style intraligne.

XslLink

Élément

Facultatif. Contient une URL qui spécifie un fichier XSLT à utiliser pour la transformation.

L’une des propriétés List* (ListName, ListUrl ou ListDisplayName) doit être présente et doit spécifier une référence à une liste valide. Si plusieurs propriétés sont présentes, l’ordre d’évaluation est successivement ListName, ListUrl, puis ListDisplayName.

Si l’une des propriétés XmlDefinition* (XmlDefinition ou XmlDefinitionLink) est présente, elle doit aboutir à un élément View valide. Sinon, la définition d’affichage qui se trouve dans l’affichage par défaut de la liste est utilisée à la place (en d’autres termes, celle figurant dans le fichier Schema.xml). Si plusieurs propriétés sont présentes, l’ordre d’évaluation est successivement XmlDefinitionLink, puis XmlDefinition.

Comme dans le cas de la propriété Xsl et de la propriété XslLink de la classe DataFormWebPart, l’ordre d’évaluation est successivement XslLink, puis XSL. Si ni XSL, ni XslLink ne sont spécifiés, le fichier XSLT référencé par l’élément View dans Schema.xml est utilisé pour la transformation. La présence d’une propriété XSL ou XslLink indique que l’affichage a été personnalisé dans SharePoint Designer pour substituer le XSLT mis en cache et non personnalisé par défaut. La propriété XSL n’est jamais modifiée par le biais de l’interface utilisateur SharePoint Foundation, mais uniquement par l’intermédiaire de SharePoint Designer lorsque des actions de mise en forme explicites sont effectuées (par opposition à la modification de requête). Par exemple, pour appliquer une mise en forme conditionnelle dans SharePoint Designer, vous devez mettre à jour le contenu de XSL, alors que cette mise à jour n’est pas nécessaire pour ajouter ou supprimer des colonnes.

La méthode GetDataSource() de la classe XsltListViewWebPart substitue la méthode GetDataSource() de la classe DataFormWebPart. La classe XsltListViewWebPart résout la référence de liste, puis crée un contrôle de source de données (SPDataSource) en fonction du contenu de la propriété XmlDefinition.

Voir aussi

Concepts

Vue d’ensemble du système de rendu d’affichage Liste XSLT

Exemples d’arborescences de nœuds d’entrée et de résultat dans les transformations XSLT

Schéma d’affichage CAML et XMLDefinition

Procédure : personnaliser le rendu d’un champ d’un affichage de liste

Procédure : implémenter des ressources dans des affichages de liste personnalisés