Sharepoint XSLT Data View: получить все элементы, созданные за последние 30 дней - PullRequest
0 голосов
/ 23 октября 2009

Я знаю, что вы можете создать базовое представление для этого, но мне действительно нужен запрос в XSLT Data View, который покажет все записи, где @Status = 'Open' и @Created <30 дней назад. </p>

Я намереваюсь отобразить диаграмму, показывающую, сколько заданий находилось в трубе без работы. Итак, я создал XSLT Data View, который фильтрует источник данных, чтобы вытащить только те элементы, которые все еще открыты. Тогда в xsl я просто хочу сделать что-то вроде:

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

Я не думаю, что это сработает, потому что данные должны быть отформатированы, и я не могу получить $ THIRTYdays для работы. Кто-нибудь может показать мне пример того, как я должен это делать?

Ответы [ 4 ]

0 голосов
/ 11 ноября 2009

Я пошел с очень некрасивой датой, чтобы натянуть строку и сравнить метод:

    <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 голосов
/ 25 октября 2009

Использование запроса caml и веб-части редактора контента

    <Query>
    <ViewFields><FieldRef name='Title'/></ViewFields>
    <Where>
       <Gt>
           <FieldRef Name='Modified' />
           <Value Type='DateTime'>2009-10-05<</Value>
       </Gt>
    </Where>
...
0 голосов
/ 26 октября 2009

Может быть, я упускаю смысл того, что вы пытаетесь сделать, но этот фрагмент представляет собой запрос CAML, который извлекает что-либо с датой создания за последние 30 дней?

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

Вам нужно будет добавить Status = Open для этого.

См. Эту статью о создании запросов CAML - и Инструмент построения CAML в U2U тоже очень хорош.

0 голосов
/ 25 октября 2009

Тридцать дней - это вычисляемый столбец или что-то в этом роде? Xsl не предназначен для расчета даты.

Вы пытались использовать DataFormWebPart? Он по-прежнему отображает свой вывод с использованием XSL, но позволяет фильтровать данные перед извлечением с использованием CAML, а фильтры могут быть привязаны к переменным строки запроса, контрольным значениям, значениям CAMl и т. Д. И т. Д.

Поиск в Google для DataFormWebPart приведет к множеству объяснений / учебных пособий.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...