藥膏,夥計們!我在我的SharePoint頁面選擇現場,像這樣的選擇:如何將選擇字段的文本轉換爲圖標?
(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 />
,但它似乎從來沒有像鉤。該列絕對命名爲「範圍」。也許我只需要add the right mode?
在螢火蟲,我可以看到,類永遠不會被添加。
[更新]我注意到,在我使用這種方式的模板,除非它有定義的正確mode
模板從來沒有「花」等地。不過,我已經搜遍了世界,找不到合適的mode
用於選擇字段。我甚至爲創建了一個問題,即,here。此外,thisNode
的使用是從Microsoft's examples,您可以非常容易地修改字段類型(除了在這裏這個選擇字段的情況下)。
BGM,你已經寫了一個模板,這一事實是不夠的,這個模板永遠被執行。如果通過XSLT內置(默認)模板的代碼選擇執行它們,則這些模板不知道名爲'$ thisNode'的任何參數,並且不會將此參數傳遞給您的模板。這意味着模板啓動時參數的值是空字符串 - 因此沒有滿足'xsl:when'測試條件,因此選擇'xsl:otherwise'。 –