現在、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はページの下部にありますが、表示されず、重複のために問題が発生しています...) ソースについては、公開を有効にして、スタイル ライブラリに 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>
リストの名前を動的に取得する必要があるだけで、それで終わりです。
ちゃ。
EDIT : リスト名を動的に持つスクリプト
<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 を返します。