Лучший отвечающий
Форматирование даты и вывод даты ItemStyle.xlt

Вопрос
-
Доброго времени суток, пытаюсь отредактировать Веб-часть "Запрос содержимого", необходимо добавить созданный столбец "Дата утверждения"
В веб-части изменил строки:
<property name="CommonViewFields" type="string">
_x0414__x0430__x0442__x0430__x0020__x0443__x0442__.....и т.д,DateTime
</property>
<property name="DataColumnRenames" type="string"> _x0414__x0430__x0442__x0430__x0020__x0443__x0442__.....и т.д,DateApprov; </property>
Добавил новый стиль в ItemStyle.xlt, назвал его NewDocStyle
<xsl:variable name="DateApprov"> <xsl:value-of select="@DateApprov" /> </xsl:variable>
<div class="description"> Утвержден: <xsl:value-of select="$DateApprov" /> </div>
Утвержден: 2011-07-08 00:00:00Но необходимо убрать время, пробовал сделать через FormatDateTime, веб-часть выдает ошибку.
<xsl:variable name="DateApprov"> <xsl:value-of select="ddwrt:FormatDateTime(string(@DateApprov) ,1049 ,'DD.MM.YYYY')" /> </xsl:variable>
Полный код стиля DocNewStyle
<xsl:template name="NewDocStyle" match="Row[@Style='NewDocStyle']" mode="itemstyle"> <xsl:variable name="SafeLinkUrl"> <xsl:call-template name="OuterTemplate.GetSafeLink"> <xsl:with-param name="UrlColumnName" select="'LinkUrl'"/> </xsl:call-template> </xsl:variable> <xsl:variable name="DisplayTitle"> <xsl:call-template name="OuterTemplate.GetTitle"> <xsl:with-param name="Title" select="''"/> <xsl:with-param name="UrlColumnName" select="'LinkUrl'"/> <xsl:with-param name="UseFileName" select="1"/> </xsl:call-template> </xsl:variable> <xsl:variable name="DateApprov"> <xsl:value-of select="ddwrt:FormatDateTime(string(@DateApprov) ,1049 ,'MM')" /> </xsl:variable> <div class="item link-item"> <xsl:if test="string-length(@DocumentIconImageUrl) != 0"> <div class="image-area-left"> <img class="image" src="{@DocumentIconImageUrl}" title="" /> </div> </xsl:if> <div class="link-item"> <xsl:call-template name="OuterTemplate.CallPresenceStatusIconTemplate"/> <a href="{$SafeLinkUrl}" title="{@LinkToolTip}"> <xsl:if test="$ItemsHaveStreams = 'True'"> <xsl:attribute name="onclick"> <xsl:value-of select="@OnClickForWebRendering"/> </xsl:attribute> </xsl:if> <xsl:if test="$ItemsHaveStreams != 'True' and @OpenInNewWindow = 'True'"> <xsl:attribute name="onclick"> <xsl:value-of disable-output-escaping="yes" select="$OnClickTargetAttribute"/> </xsl:attribute> </xsl:if> <xsl:value-of select="$DisplayTitle"/> </a> <div class="description"> <xsl:value-of select="@Description" /> </div> <div class="description"> Утвержден: <xsl:value-of select="$DateApprov" /> </div> </div> </div> </xsl:template>
28 июля 2011 г. 5:36
Ответы
-
aland17,
по вашему вопросу удалось найти решение, как оказалось, ошибка связана с реализацией XSLT DateFormat функции в Sharepoint 2010. Чтобы исправить данный bug придется написать свой xsl template, см. ниже:
Bug With SharePoint 2010 XSLT DateFormat Function
XsltListViewWebPart Date Format using DDWRT
Мнения, высказанные здесь, являются отражением моих личных взглядов, а не позиции корпорации Microsoft. Вся информация предоставляется "как есть" без каких-либо гарантий.- Предложено в качестве ответа Roman Zhukov 3 августа 2011 г. 11:02
- Помечено в качестве ответа Dmitry Davydov 4 августа 2011 г. 9:20
3 августа 2011 г. 11:02
Все ответы
-
Здравствуйте,
попробуйте в коде исправить 'DD.MM.YYYY' на 'dd.MM.yyyy':
<xsl:variable name="DateApprov">
<xsl:value-of select="ddwrt:FormatDateTime(string(@DateApprov) ,1049 ,'dd.MM.yyyy')" />
</xsl:variable>
Мнения, высказанные здесь, являются отражением моих личных взглядов, а не позиции корпорации Microsoft. Вся информация предоставляется "как есть" без каких-либо гарантий.2 августа 2011 г. 10:46 -
Я использовал другую функцию: ddwrt:FormatDate(string($created) ,1049 ,1)"
Но столкнулся с другой проблемой:
Дата 01.02.2010 16:26, т.е. 1-е февраля 2010г., отображается почему-то как 2 января 2010 г.
при этом дата 24.11.2009 10:24 - отображается правильно 24 ноября 2009 г.
вот код:
<xsl:value-of select="ddwrt:FormatDate(string($created) ,1049 ,1)" /> |
<xsl:value-of select="$created" /> |
<xsl:value-of select="ddwrt:FormatDate(string($created) ,1049 , 3)" />
вот, что на выходе:
02.01.2010 | 01.02.2010 16:26 | 2 января 2010 г.
24.11.2009 | 24.11.2009 10:24 | 24 ноября 2009 г.
Портал русский, поле - системное Created, в БД хранится в поле tp_Created:
2010-02-01 13:26:24.000
2009-11-24 07:24:12.000
2 августа 2011 г. 11:09 -
Странно, а если, например, 1049 заменить на 2057(Английский (Великобритания)) несоответствие остается для ноября и февраля?
Мнения, высказанные здесь, являются отражением моих личных взглядов, а не позиции корпорации Microsoft. Вся информация предоставляется "как есть" без каких-либо гарантий.2 августа 2011 г. 12:33 -
Да, то же самое и с 2057, и с 1033
:(
3 августа 2011 г. 6:44 -
Скажите, а если попробовать этот вариант <xsl:value-of select="ddwrt:FormatDateTime(string($created) ,1049 ,'dd.MM.yyyy')" />
что на выходе будет?
Мнения, высказанные здесь, являются отражением моих личных взглядов, а не позиции корпорации Microsoft. Вся информация предоставляется "как есть" без каких-либо гарантий.3 августа 2011 г. 8:14 -
То же самое:
ddwrt:FormatDateTime(string($created), 1049 ,'dd.MM.yyyy')
02.01.2010
24.11.2009ddwrt:FormatDateTime(string($created), 1049 ,'dd MMMM yyyy')
02 января 2010
24 ноября 2009
3 августа 2011 г. 8:25 -
aland17,
по вашему вопросу удалось найти решение, как оказалось, ошибка связана с реализацией XSLT DateFormat функции в Sharepoint 2010. Чтобы исправить данный bug придется написать свой xsl template, см. ниже:
Bug With SharePoint 2010 XSLT DateFormat Function
XsltListViewWebPart Date Format using DDWRT
Мнения, высказанные здесь, являются отражением моих личных взглядов, а не позиции корпорации Microsoft. Вся информация предоставляется "как есть" без каких-либо гарантий.- Предложено в качестве ответа Roman Zhukov 3 августа 2011 г. 11:02
- Помечено в качестве ответа Dmitry Davydov 4 августа 2011 г. 9:20
3 августа 2011 г. 11:02 -
Спасибо огромное!
Будем пробовать.
Надеюсь, в MS этот баг пофиксят к следующему Cumulative Update :)
3 августа 2011 г. 14:13