我目前尝试在 SharePoint Designer 中以自定义表单显示列名。我使用 Sharepoint 2013,因此设计视图不再存在:(。该表单用于在自定义列表中创建新元素。我不能将名称直接放在模板中,因为我想以不同的形式使用此模板,所以我有动态恢复我的列的名称.问题是我只找到了内部名称.我在datafileds标签中看到有一对内部名称依赖于显示名称但我没有找到如何恢复显示名称也。
只有可能吗?有人有想法可以帮助我吗?
如果您想查看我的代码,我会放一些代码。这部分查找名称包含“question”的属性,并在找到时调用模板“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位于页面底部,我没有看到它并且由于重复而有一些问题......)关于源,我激活了发布并在样式库中创建了一个文件夹脚本。
<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>
我只需要动态地获得列表的名称,它就结束了。
赛亚。
编辑:动态列表名称的脚本
<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 使用列表名称或列表 ID。SPListNameFromUrl 返回列表 ID。