В момента се опитвам да покажа името на колоната в персонализирана форма в SharePoint Designer. Използвам Sharepoint 2013, така че изгледът за дизайн вече не съществува :(. Формулярът се използва за създаване на нов елемент в персонализиран списък. Не мога да поставя името директно в шаблона, защото бих искал да използвам този шаблон в различни форми, така че имам за динамично възстановяване на името на моите колони. Проблемът е, че намерих само вътрешното име. Видях в маркера datafileds има двойки, при които вътрешното име се разчита на показваното име, но не намерих как да възстановя показваното име с това също.
Само възможно ли е? Някой има идея да ми помогне?
Сложих някакъв код, ако искате да погледнете моя код. Тази част търси атрибут, чието име съдържа „въпрос“ и извиква шаблона „title_line“, когато намери такъв. Функцията name() ми дава вътрешното име, което е pb...
<xsl:template match="Row">
<xsl:for-each select="@*">
<xsl:choose>
<xsl:when test="contains(name(),'Question')">
<xsl:call-template name="title_line" >
<xsl:with-param name="title" select="name()"/>
<xsl:with-param name="class" select="'class_title'"/>
</xsl:call-template>
</xsl:when>
<xsl:otherwise>
</xsl:otherwise>
</xsl:choose>
</xsl:for-each>
</xsl:template>
Тази част е за показване на заглавието:
<xsl:template name="title_line" >
<xsl:param name="title" select="'no title'" />
<xsl:param name="class" select="'no_class'" />
<tr>
<td colspan ="2" class="{$class}" style="font-weight:bold;font-size:medium">
<xsl:value-of select="$title" />
</td>
</tr>
</xsl:template>
МОЕТО РЕШЕНИЕ:
Използвах JQuery 1.9.0 и SPServices 0.7.2
Импортирайте тези библиотеки в заглавката. ContentPlacdeHolderId PlaceHolderAdditionalPageHead е в долната част на страницата, не го видях и имах някои проблеми поради дубликата...) Относно източника, активирах публикуването и създадох папка Scripts в стиловете Библиотека.
<asp:Content ContentPlaceHolderId="PlaceHolderAdditionalPageHead" runat="server">
<SharePoint:DelegateControl runat="server" ControlId="FormCustomRedirectControl" AllowMultipleControls="true"/>
<SharePoint:UIVersionedContent UIVersion="4" runat="server">
<ContentTemplate>
<SharePoint:CssRegistration Name="forms.css" runat="server"/>
<!-- add JQuery 1.9.0-->
<script id ="JQUERY_ID" type="text/javascript" src="../../Style%20Library/Scripts/jquery-1.9.0.js">
</script>
<!-- add SPServices 0.7.2 -->
<script id ="JQUERY_ID" type="text/javascript" src="../../Style Library/Scripts/jquery.SPServices-0.7.2.js">
</script>
</ContentTemplate>
</SharePoint:UIVersionedContent>
</asp:Content>
Сега показването на заглавието е:
<xsl:template name="title_line" >
<xsl:param name="title" select="'no title'" />
<xsl:param name="class" select="'no_class'" />
<tr>
<td colspan ="2" class="{$class}" style="font-weight:bold;font-size:medium">
<script type="text/javascript">
var static_name = '<xsl:value-of select="$title" />';
var display_name = $().SPServices.SPGetDisplayFromStatic ({
listName: "listeperso",
columnStaticName: static_name
});
document.write(display_name);
</script>
</td>
</tr>
</xsl:template>
Просто трябва да имам името на списъка динамично и всичко свърши.
Cya.
РЕДАКТИРАНЕ : скриптът с името на списъка динамично
<script type="text/javascript">
var list_name = $().SPServices.SPListNameFromUrl();
var static_name = '<xsl:value-of select="$title" />';
var display_name = $().SPServices.SPGetDisplayFromStatic ({
listName : list_name,
columnStaticName: static_name
});
document.write(display_name);
</script>
listName използва или името на списъка, или ИД на списъка. SPListNameFromUrl връща ИД на списъка.