2009-10-23 2 views
0

Je sais que vous pouvez créer une vue basique pour cela, mais ce dont j'ai vraiment besoin, c'est une requête dans la vue des données XSLT qui montrera tous les enregistrements où @Status = 'Open' et @Created < il y a 30 jours.Vue des données XSLT Sharepoint: Récupère tous les éléments qui ont été créés dans les 30 derniers jours

J'ai l'intention d'afficher un tableau qui montre le nombre de fois où des tâches ont été installées dans le tuyau sans être travaillées. Donc, ce que j'ai fait a été créé une vue de données XSLT qui filtre la source de données pour retirer uniquement les éléments qui sont encore ouverts. Ensuite, dans le xsl, je veux juste faire quelque chose comme:

<xsl:variable name="THIRTYdaysCount" select="count(/dsQueryResponse/Rows/Row[normalize-space(@Created) &lt; $THIRTYdays])" /> 

Je ne pense pas que cela fonctionne parce que les données doivent être formatées et je ne peux pas obtenir THIRTYdays $ pour travailler non plus. Quelqu'un peut-il me montrer un exemple sur la façon dont je devrais le faire?

Répondre

0

Je suis allé avec une date vraiment moche à la chaîne et la méthode CMPARER:

<xsl:variable name="THIRTYdaysDate"> 
     <xsl:call-template name="SubMonth"> 
         <xsl:with-param name="StartDate" select="ddwrt:TodayIso()" /> 
         <xsl:with-param name="MonthsToAdd" select="1" /> 
     </xsl:call-template>  
</xsl:variable> 
<xsl:variable name="SIXTYdaysDate"> 
     <xsl:call-template name="SubMonth"> 
         <xsl:with-param name="StartDate" select="ddwrt:TodayIso()" /> 
         <xsl:with-param name="MonthsToAdd" select="2" /> 
     </xsl:call-template>  
</xsl:variable> 
<xsl:variable name="NINETYdaysDate"> 
     <xsl:call-template name="SubMonth"> 
         <xsl:with-param name="StartDate" select="ddwrt:TodayIso()" /> 
         <xsl:with-param name="MonthsToAdd" select="3" /> 
     </xsl:call-template>  
</xsl:variable> 

<xsl:variable name="THIRTYdays" select="count(/dsQueryResponse/Rows/Row[number(concat(substring(ddwrt:FormatDateTime(string(@Created), 1033, 'yyyyMMdd'),0,5), 
       substring(ddwrt:FormatDateTime(string(@Created), 1033, 'yyyyMMdd'),5,2), 
       substring(ddwrt:FormatDateTime(string(@Created), 1033, 'yyyyMMdd'),7,2))) &gt;= $THIRTYdaysDate])" /> 
<xsl:variable name="SIXTYdays" select="count(/dsQueryResponse/Rows/Row[number(concat(substring(ddwrt:FormatDateTime(string(@Created), 1033, 'yyyyMMdd'),0,5), 
       substring(ddwrt:FormatDateTime(string(@Created), 1033, 'yyyyMMdd'),5,2), 
       substring(ddwrt:FormatDateTime(string(@Created), 1033, 'yyyyMMdd'),7,2))) &gt;= $SIXTYdaysDate])" /> 
<xsl:variable name="NINETYdays" select="count(/dsQueryResponse/Rows/Row[number(concat(substring(ddwrt:FormatDateTime(string(@Created), 1033, 'yyyyMMdd'),0,5), 
       substring(ddwrt:FormatDateTime(string(@Created), 1033, 'yyyyMMdd'),5,2), 
       substring(ddwrt:FormatDateTime(string(@Created), 1033, 'yyyyMMdd'),7,2))) &gt;= $NINETYdaysDate])" /> 
<xsl:variable name="GREATERdays" select="count(/dsQueryResponse/Rows/Row[number(concat(substring(ddwrt:FormatDateTime(string(@Created), 1033, 'yyyyMMdd'),0,5), 
       substring(ddwrt:FormatDateTime(string(@Created), 1033, 'yyyyMMdd'),5,2), 
       substring(ddwrt:FormatDateTime(string(@Created), 1033, 'yyyyMMdd'),7,2))) &lt; $NINETYdaysDate])" /> 
<xsl:variable name="AllTasks" select="count(/dsQueryResponse/Rows/Row)" /> 
0

Est-ce que THIRtydays est une colonne calculée ou quelque chose comme ça? Xsl n'est pas prévu pour les calculs de date.

Avez-vous essayé d'utiliser DataFormWebPart? Il restitue toujours sa sortie en utilisant XSL, mais permet aux données d'être filtrées avant d'être récupérées en utilisant CAML et les filtres peuvent être liés à des variables de querystring, des valeurs de contrôle, des valeurs CAMl, etc ..

Google pour DataFormWebPart résultera en: tonnes d'explications/tutoriels.

0

Utilisez une requête CAML et l'éditeur de contenu web part

<Query> 
    <ViewFields><FieldRef name='Title'/></ViewFields> 
    <Where> 
     <Gt> 
      <FieldRef Name='Modified' /> 
      <Value Type='DateTime'>2009-10-05<</Value> 
     </Gt> 
    </Where> 
... 
0

Peut-être que je manque le point de ce que vous essayez de faire, mais ce fragment une requête CAML qui sort quelque chose avec une date de création dans le les 30 derniers jours?

<WHERE> 
<GE> 
<FieldRef Name="Created"/> 
<Value Type="DateTime"><Today OffsetDays="-30" /></Value> 
</GE> 
</WHERE> 

Vous devrez ajouter Status = Open to this.

Voir ce article on creating CAML queries - et U2U's CAML builder tool est très bon aussi.

Questions connexes