2009-10-23 80 views
0

我知道你可以創建一個基本觀點做這個創建的所有項目,但我真正需要的是在XSLT數據視圖的查詢,將顯示所有記錄其中@Status = '開放' 和@Created <在30天前。的SharePoint XSLT數據視圖:獲取在過去30天

我打算上顯示圖表,顯示任務多久一直坐在管子沒有正在處理的計數。所以,我所做的就是創建一個XSLT數據視圖,其過濾數據源只拉出仍然打開的項目。然後在XSL,我只想做一些事情,如:

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

我不認爲這會工作,因爲需要對數據進行格式化,我不能得到$ THIRTYdays來工作的。任何人都能向我展示我應該如何做這件事的例子?

回答

0

我去一個非常醜陋的日期字符串和比較方法:

<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

是THIRTYdays計算列或類似的東西? Xsl不適用於日期計算。

您是否嘗試過使用DataFormWebPart?它仍然使用XSL呈現它的輸出,但允許在使用CAML檢索數據之前對數據進行過濾,並且可以將過濾器綁定到查詢字符串變量,控制值,CAMl值等等。

Google搜索DataFormWebPart將導致大量的解釋/教程。

0

使用CAML查詢和內容編輯器Web部件

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

也許我缺少的是什麼你正在嘗試做的地步,但這個片段的CAML查詢翻出任何與在一個創建日期最近30天?

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

您必須添加狀態=打開了這一點。

看到這個article on creating CAML queries - 和U2U's CAML builder tool是非常好的。

相關問題