none
Customisation XSL SharePoint 2010 RRS feed

  • Discussion générale

  • Bonjour,

    j'ai un champ dans mon content type qui s'appelle ContainerID

    dans ma vue par défaut sharepoint j'ai fais des customisation avec du XSL

    mon problème c'est que j'essaie de tester si le champs containerID est vide ou pas et afficher selon le résultat dans la colonne Titre une concaténation

    à titre d'exemple:

    si containerID est vide le titre sera titredemonelement (X)

    sinon le titre sera titredemonelement (V)

    j'arrive pas à avoir la valeur de containerID dans mon xsl:(((

    est ce que quelqu'un peut m'aider

    merci,

     


    Cheers,
    • Type modifié Ciprian Duduiala vendredi 14 octobre 2011 05:59 pas de solution
    • Déplacé Hengzhe Li mardi 21 février 2012 06:41 merge forum (Origine :Développement Sharepoint 2010)
    lundi 3 octobre 2011 14:37

Toutes les réponses

  • Bonjour

    Est-ce que la colonne ContainerID est bien inclue dans la vue par défaut de la liste (ou la vue utilisée) ? (dans la page de paramètre de la liste, partie affichages)

    mardi 4 octobre 2011 07:00
  • Bonjour,

    Non je l'ai pas incluse  dans la vue parce que le client ne veut pas qu'elle le soit. du mois s'il y a une possibilité de cacher la colonne dans la vue ça dérange pas du moment que je puisse l'utiliser dans mon xsl


    Cheers,

    mardi 4 octobre 2011 10:39
  • A vrai dire, je ne vois pas bien comment exactement vous vous y etes pris pour personaliser l'affichage de cette liste...

    Ce qui est sûr c'est qui dit xslt dit aussi requette (CAML) pour récuperer les items. Cette requette généralement est basée sur une vue. Si la requette ne remonte pas la colonne, impossible de l'afficher ou la traiter.

    Dans la mesure où vous personalisez l'affichage avec votre xslt, vous pouvez inclure la colonne ds la définition de la vue sur laquelle vous etes basé et ensuite ne pas l'afficher mais l'utiliser dans un xsl if par exemple....

    mardi 4 octobre 2011 11:12
  • j'ai crée une définition de liste et j'ai ajouter dans la définition de la vue par défaut les colonnes qui m'interressent <ViewFields> aprés j'ai localisé les xsl:template relatif aux colonnes que je voulais customiser avec sharepoint designer copier le code dans mon ficher xsl à moi

    exemple :

    <?xml version="1.0" encoding="utf-8"?>
    <xsl:stylesheet xmlns:x="http://www.w3.org/2001/XMLSchema"
            xmlns:d="http://schemas.microsoft.com/sharepoint/dsp"
            version="1.0" exclude-result-prefixes="xsl msxsl ddwrt"
            xmlns:ddwrt="http://schemas.microsoft.com/WebParts/v2/DataView/runtime"
            xmlns:asp="http://schemas.microsoft.com/ASPNET/20"
            xmlns:__designer="http://schemas.microsoft.com/WebParts/v2/DataView/designer"
            xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
            xmlns:msxsl="urn:schemas-microsoft-com:xslt"
            xmlns:SharePoint="Microsoft.SharePoint.WebControls"
            xmlns:ddwrt2="urn:frontpage:internal"
            xmlns:o="urn:schemas-microsoft-com:office:office"
            ddwrt:ghost="show_all">
      <xsl:include href="/_layouts/xsl/main.xsl"/>
      <xsl:include href="/_layouts/xsl/internal.xsl"/>
      <xsl:template name="FieldRef_body.Priority" ddwrt:dvt_mode="body" match="FieldRef[@Name='Priority']" mode="body" ddwrt:ghost="hide">
        <xsl:param name="thisNode" select="."/>
        <xsl:choose>
          <!--english-->
          <xsl:when test="$thisNode/@*[name()=current()/@Name]='Low' ">
            <img src="_layouts/ribbonicons/green16.png" alt="Low Priority"/>
          </xsl:when>
          <xsl:when test="$thisNode/@*[name()=current()/@Name]= 'Normal'">
            <img src="_layouts/ribbonicons/yellow16.png" alt="Normal Priority"/>
          </xsl:when>
          <xsl:when test="$thisNode/@*[name()=current()/@Name]= 'High'">
            <img src="_layouts/ribbonicons/red16.png" alt="High Priority"/>
          </xsl:when>

    .....

    exemple ici je change la niveau de priorité par des images

    ce fichier xsl est dans une solution visual studio dans le répertoire mappé Layouts\XSL

    dans la définition de la liste  --> définition de la vue j'ai changé la balise   <XslLink Default="TRUE">main.xsl</XslLink> par mon xsl à savoir

      <XslLink Default="TRUE">monxsl.xsl</XslLink>

    et le tour est joué

    j'y connais que dalle au xsl donc tout est discutable, néanmoins si j'ajoute la colonne containerID dans la vue comment je fais pour la cacher et pour l'exploiter

    Merci


    Cheers,
    mardi 4 octobre 2011 12:08
  • A priori il faut remplacer le template correspondant à la fois à la colonne Titre et à la colonne ContainerId (en l'ayant inclue au préalable ds la vue).

    En fait je pense même qu'il faudrait remplacer le template correspondant au rendu d'une ligne entiere car c'est à ce niveau que vous aurez à la fois les 2 variables dans le même scope afin de faire votre concatenation en fonction de la valuer de ContainerID.

    Honettement je connais mal cette partie, ce que je peux vous conseiller c'est de regarder le main.xsl par défaut de plus pret....

    mercredi 5 octobre 2011 07:32