皆さん、安心してください!私のシェアポイントページには、次のような選択肢を持つ選択肢フィールドがあります。
(1) Go
(2) Warning
(3) Stop
今、私はそれをテキストではなくアイコンとしてリストに表示したいと考えています。そのために機能するjqueryスクリプトがありますが、含まれているテキストのすべてのリストを検索するには時間がかかります.表示される前にレンダリングされるため、とにかくxslを使用することをお勧めします.
では、どうすればこれを xsl で実現できますか? 私はxslしか学んでいないので、これは私が得た限りです:
<xsl:stylesheet
xmlns:x="http://www.w3.org/2001/XMLSchema"
xmlns:d="http://schemas.microsoft.com/sharepoint/dsp"
version="1.0"
exclude-result-prefixes="xsl msxsl ddwrt"
xmlns:ddwrt="http://schemas.microsoft.com/WebParts/v2/DataView/runtime"
xmlns:asp="http://schemas.microsoft.com/ASPNET/20"
xmlns:__designer="http://schemas.microsoft.com/WebParts/v2/DataView/designer"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
xmlns:msxsl="urn:schemas-microsoft-com:xslt"
xmlns:SharePoint="Microsoft.SharePoint.WebControls"
xmlns:ddwrt2="urn:frontpage:internal">
<!-- Convert the Scope Field into an icon -->
<xsl:template match="FieldRef[@Name='Scope']">
<xsl:param name="thisNode" select="."/>
<xsl:choose>
<xsl:when test="$thisNode/@Scope='(1) Go'">
<td class="statusRating1"></td>
</xsl:when>
<xsl:when test="$thisNode/@Scope='(2) Warning'">
<td class="statusRating2"></td>
</xsl:when>
<xsl:when test="$thisNode/@Scope='(3) Stop'">
<td class="statusRating3"></td>
</xsl:when>
<xsl:otherwise>
<xsl:value-of select="$thisNode/@Scope" />
</xsl:otherwise>
</xsl:choose>
</xsl:template>
</xsl:stylesheet>
適用したいcssは次のとおりです。
.statusRating1{background-image: url("/_layouts/custom/images/go.png"); }
.statusRating2{background-image: url("/_layouts/custom/images/warning.png"); }
.statusRating3{background-image: url("/_layouts/custom/images/stop.png"); }
今、私はこれを使って、または使わずに試してみmode="Choice_body"
ました
. 列の名前は間違いなく「スコープ」です。たぶん、正しいモードを追加する必要がありますか?mode="MultiChoice_body
Text_body
<xsl:apply-templates />
firebug では、クラスが追加されていないことがわかります。
[更新]この方法でテンプレートを使用した他の場所では、テンプレートが正しくmode
定義されていない限り、テンプレートが「取得」されないことに気付きました。しかし、私は世界中をグーグルで検索しmode
ましたが、選択フィールドに使用する権利が見つかりません。そのための質問もここで作成しました。また、 の使用は、フィールド タイプを非常に簡単に変更できるMicrosoft の例thisNode
からのものです (この選択フィールドの場合を除く)。