Attention !

Ce site n'est plus maintenu. Retrouvez l'article sur Colorseeds.net

Vous allez être redirigé dans 5 secondes...

Vous êtes ici : Accueil > Blog technique > XSL / Sharepoint

XSL / Sharepoint : Doublons des entrées dans les filtres (DataFormWebParts)
17/02/2010

Dans le cas de DataFormWebParts à sources de données aggrégées, il se peut que les filtres des en-têtes contiennent plusieurs fois les mêmes valeurs.

Ce petit bug d'affichage est corrigible en allant manipuler le code XSL de la page (via le SharePoint Designer).

Dans le template nommé "dvt.filterfield", trouver une boucle for-each qui appelle le template "filteroption" :

     <xsl:call-template name="dvt.filteroption">
          <xsl:with-param name="name" select="$fieldname" />
          <xsl:with-param name="value" select="." />
          <xsl:with-param name="type" select="$fieldtype" />
      </xsl:call-template>
 

La boucle qui appelle ce template est censée faire un "distinct" sur les données à lister, mais ça ne fonctionne pas toujours.

Les données sont cependant triées, on va donc autoriser l'affichage de la donnée à chaque fois qu'on change de valeur dans la boucle. Pour cela, il suffit d'encadrer cet appel par la condition suivante :

     <xsl:variable name="OptionValue" select="ddwrt:NameChanged(string(.), 0)" />
     <xsl:if test="string-length($OptionValue)">

          <xsl:call-template name="dvt.filteroption">
              <xsl:with-param name="name" select="$fieldname" />
              <xsl:with-param name="value" select="." />
              <xsl:with-param name="type" select="$fieldtype" />
          </xsl:call-template>

     </xsl:if>

 

NB : NameChanged teste si une valeur change depuis sa dernière affectation.

Ajouter un commentaire

Auteur


Email


Message *