none
Existe-t-il des modèles de XLST réutilisables et adaptables ? Quelles ressources sont les mieux pour un novice ? RRS feed

  • Discussion générale

  • Bonjour,

    Par code, je configure une CQWP (Content query qeb part - Requete de contenu). J'obtiens le résultat désiré a la seule différence que les valeurs des différentes colonnes appelées se retrouvent toutes dans une seule colonne, les unes a la suite des autres, derrière la valeur du titre. Hors je veux que chaque valeur ait sa propre colonne dans le résultat final. Pour formater les résultats comme désiré, je crois comprendre qu'il faut configurer le XLST qui s'occupe de l'affichage des résultats. Je ne connais rien au XLST. Existe-t-il des modèles de XLST que je peux réutiliser et adapter ? Comment puis-je savoir ce qu'il faut coder dans le XLST en fonction du résultat visuel désiré ?

    Merci.

    jeudi 24 janvier 2013 13:33

Toutes les réponses

  • Bonjour

    1er point : il s'agit de XSLT ;)

    Alors à ma connaissance il n'y a pas franchement de modèles par défaut à par ceux qui sont fourni par sharepoint pour représenter les tables de données (les listes).

    J'ai l'impression que votre besoin est un peu spécifique et nécessite donc un XSLT spécifique ! :)

    Le mieux serait de nous indiquer ici le resultat XML reçu par la webpart, ainsi qu'un exemple du html désiré en sortie. On pourra vous donner une piste du XSLT à mettre en place ! Quoiqu'il arrive il faudra vous y mettre au xslt si vous souhaitez faire du branding dans SharePoint...

    Pour obtenir les données au format XML sur votre webpart, une bonne solution consiste à mettre un XSLT qui ne fait que générer le xml sous forme 'html' dans la sortie.

    Quelque chose comme ça :

    <xsl:stylesheet version="1.0" 
    xmlns:xsl="http://www.w3.org/1999/XSL/
     Transform">
      <xsl:output method="html" version="1.0" indent="yes"/>
    
    <xsl:copy-of select="."/>
    
    </xsl:stylesheet>


    Blog Sharepoint : www.paslatek.net Twitter : @LimozinLionel

    jeudi 24 janvier 2013 14:38
  • N'est-il pas possible de trouver un exemple de XLST qui permet d'afficher une CQWP a la manière d'une webpart native de SharePoint 2010 afin qu'elle se fonde dans le graphisme natif des WP ?
    jeudi 24 janvier 2013 15:10
  • c'est en principe son comportement par défaut me semble-t-il ....
    Pouvez vous donner une capture d'ecran de la configuration de votre webpart et le rendu obtenu pour que je comprenne bien le  besoin ?

    Blog Sharepoint : www.paslatek.net Twitter : @LimozinLionel

    jeudi 24 janvier 2013 15:18
  • Voici la vue du resultat de la CQWP.

    2 problemes majeurs :

    1. La requete demande a avoir en retour les valeurs de la colonne Titre et la colonne Date créé. Les valeurs s'affichent mais dans une seule colonne. Comment les séparer et obtenir des colonnes distinctes ?
    2. Comment faire afficher l'intitulé des colonnes tout en haut comme dans une WP habituelle ?

    En résumé, comment reproduire l,aspect exact d'une WP classique native de Spoint ? Mais si au moins je pouvais obtenir des colonnes séparées avec leur intitulé, ce serait deja un grand pas.

    Merci.

    jeudi 24 janvier 2013 16:19
  • Voici le code utilisé pour générer la CQWP

    SPLimitedWebPartManager webPartsSiteFamille = p_Web.GetLimitedWebPartManager(p_Web.Url + "/Bibliotheque Pages Famille/questions.aspx", System.Web.UI.WebControls.WebParts.PersonalizationScope.Shared);

               SPList listePlanTravail = p_WebDossier.Lists.GetListByRootFolderName(Constante.ListRootFolderName.ListePlanDeTravail);

               string fieldEtat = listePlanTravail.Fields[Constante.IdColonneSite.ChampEtat].InternalName;
               string fieldEtatEcheance = listePlanTravail.Fields[Constante.IdColonneSite.ChampEcheanceEtat].InternalName;
               string fieldDateEcheance = listePlanTravail.Fields[Constante.IdColonneSite.ChampEcheanceDate].InternalName;
               string fieldTypeAction = listePlanTravail.Fields[Constante.IdColonneSite.ListePlanDeTravailTypeAction].InternalName;

               try
               {
                   ContentByQueryWebPart cqwpQuestions = new ContentByQueryWebPart();
                   cqwpQuestions.ContentTypeBeginsWithId = "0x0100fec2c533c802428a8ae3be1d3013eda700ca1934278f264373a69b550045dcd32a006d76d55cd361435b99a90adf7ba8a8370010078c58eb78480e993465067b0849d500080faffa0e684dd8bf28795bd7965437";
                   cqwpQuestions.ServerTemplate = "103";
                   cqwpQuestions.UseCopyUtil = true;
                   cqwpQuestions.WebUrl = p_Web.Url;
                   cqwpQuestions.Title = "Questions";
                   cqwpQuestions.FilterField1 = fieldEtat;
                   cqwpQuestions.FilterType1 = "Text";
                   cqwpQuestions.FilterValue1 = "2. En cours";
                   cqwpQuestions.Filter1ChainingOperator = ContentByQueryWebPart.FilterChainingOperator.Or;
                   cqwpQuestions.FilterField2 = fieldEtat;
                   cqwpQuestions.FilterType2 = "Text";
                   cqwpQuestions.FilterValue2 = "1. En attente";
                   cqwpQuestions.Filter2ChainingOperator = ContentByQueryWebPart.FilterChainingOperator.And;
                   cqwpQuestions.FilterField3 = fieldTypeAction;
                   cqwpQuestions.FilterType3 = "Text";
                   cqwpQuestions.FilterValue3 = "Question";
                   cqwpQuestions.GroupBy = fieldEtatEcheance;
                   cqwpQuestions.GroupByFieldType = "Text";
                   cqwpQuestions.GroupByDirection = ContentByQueryWebPart.SortDirection.Asc;
                   cqwpQuestions.SortBy = fieldDateEcheance;
                   cqwpQuestions.SortByFieldType = "DateTime";
                   cqwpQuestions.SortByDirection = ContentByQueryWebPart.SortDirection.Asc;
                   cqwpQuestions.CommonViewFields = "UltEcheanceDate,DateTime";
                   cqwpQuestions.ItemLimit = 30;
                   
                   webPartsSiteFamille.AddWebPart(cqwpQuestions, "FullPage", 0);
               }
               finally
               {
                   webPartsSiteFamille.Dispose();
               }
    jeudi 31 janvier 2013 17:25