Gruppering efter dato i SharePoint med CQWP i 4 enkle trin
Content Query WebPart kan ikke gruppere efter dato ud af boksen. Tricket er at gruppere efter en beregnet tekstkolonne og vise datoen fra en anden, med en ny header-stil i Header.xsl.
Hvis man nogensinde har rodet med XSL-itemstyles til CQWP i SharePoint, ved man, hvor værdifulde de kan være. Og også, hvor frustrerende de kan være fra tid til anden.
Det er ikke så svært, som det måske lyder. Ud af boksen understøtter Content Query WebPart (CQWP) ikke gruppering efter dato. Det, man skal forstå, er, hvordan Header.xsl virker, når man grupperer. Tricket er at gruppere efter en simpel tekstkolonne, men vise datokolonnen.
Jeg er ved at lave en logbog, der af en eller anden grund skal bruge “Group by date” med CQWP. Hey … jeg havde brug for en case til det her, så hvorfor ikke?
De 4 trin#
- Opret en liste med en beregnet kolonne til datoen
- Opret en ny header-stil i header.xsl
- Tilføj en Content Query WebPart
- Ret beskrivelsen (valgfrit)
Trin 1: Opret en liste med en beregnet kolonne til datoen#
Opret en liste med følgende kolonner:
- Title (Single line of text)
- Description (Multiple lines of text)
- ModifiedGroup (Calculated)
- ModifiedDisplay (Calculated)
I kolonnen ModifiedCreate formaterer man kolonnen Created (eller en hvilken som helst anden datokolonne, man roder med), så den ser sådan ud:

For at få en pænt formateret dato til min gruppering har jeg lavet kolonnen ModifiedDisplay. Den viser datoen i dansk format. Den beregnede kolonne ser sådan ud:

Trin 2: Opret en ny header-stil i header.xsl#
Åbn SharePoint Designer, og gå til “/Style Library/XSL Style Sheets/Header.xsl”. Redigér filen i avanceret tilstand.
Kopiér XSL-koden nedenfor ind.
1<xsl:template name="Logbook" match="*[@GroupStyle='Logbook']" mode="header">
2<div class="groupheader item medium">
3<xsl:value-of select="@ModifiedDisplay" />
4</div>
5</xsl:template>
Trin 3: Tilføj en Content Query WebPart#
Find den side, man bruger til at vise sin logbog, eller hvad man nu arbejder på. Min forespørgsel ser sådan ud:

Min præsentation ser sådan ud. Det vigtige er at vælge at sortere efter ModifiedDisplay. Ellers får man ikke den pæne titel.

Slutresultatet skulle gerne ligne dette:

Trin 4: Ret beskrivelsen#
Den kloge læser har allerede bemærket, at der er noget galt med outputtet fra beskrivelsesfeltet. For at rette det skal man gå til “/Style Library/XSL Style Sheets/ItemStyle.xsl”. Redigér filen i avanceret tilstand.
Opret en ny skabelon til brug med logbogen. Redigér aldrig nogen af standardskabelonerne. Det er bare god praksis ikke at rode for meget med Microsofts kode. Det er bedre at tilføje mere end at erstatte det eksisterende.
Kopiér gerne min udgave, som ligger meget tæt på originalen, men læg mærke til linjen for @Description. Den lyder nu:
1 <xsl:value-of select="@Description" disable-output-escaping="yes" />
Det er disable-output-escaping=”yes”, der gør hele forskellen.
Husk at redigere CQWP, så den bruger itemstilen “Logbook”.

Her er min XSL-kode, der giver den rigtige visning:
1<xsl:template name="Logbook" match="Row[@Style='Logbook']" mode="itemstyle">
2<xsl:variable name="SafeLinkUrl">
3<xsl:call-template name="OuterTemplate.GetSafeLink">
4<xsl:with-param name="UrlColumnName" select="'LinkUrl'"/>
5</xsl:call-template>
6</xsl:variable>
7<xsl:variable name="DisplayTitle">
8<xsl:call-template name="OuterTemplate.GetTitle">
9<xsl:with-param name="Title" select="@Title"/>
10<xsl:with-param name="UrlColumnName" select="'LinkUrl'"/>
11</xsl:call-template>
12</xsl:variable>
13<div class="item">
14<div class="link-item">
15<xsl:call-template name="OuterTemplate.CallPresenceStatusIconTemplate"/>
16<a href="{$SafeLinkUrl}" title="{@LinkToolTip}">
17<xsl:if test="$ItemsHaveStreams = 'True'">
18<xsl:attribute name="onclick">
19<xsl:value-of select="@OnClickForWebRendering"/>
20</xsl:attribute>
21</xsl:if>
22<xsl:if test="$ItemsHaveStreams != 'True' and @OpenInNewWindow = 'True'">
23<xsl:attribute name="onclick">
24<xsl:value-of disable-output-escaping="yes" select="$OnClickTargetAttribute"/>
25</xsl:attribute>
26</xsl:if>
27<xsl:value-of select="$DisplayTitle"/>
28</a>
29<div class="description">
30<xsl:value-of select="@Description" disable-output-escaping="yes" />
31</div>
32</div>
33</div>
34</xsl:template>
Det giver mig denne visning:

Ikke flere trin.
Tweet det#
- Lær at redigere XSL-itemstyles for at “gruppere efter dato” i SharePoint 2010 – Klik for at tweete
- Gruppering efter dato i SharePoint med CQWP i 4 enkle trin Klik for at tweete
Sidst opdateret