适用场景:
三个列表进行Join,然后试图上显示ProjectedField,而ProjectedField不支持设置DisplayName.默认只能显示英文名。
join caml如下:
<View>
<Query>
<OrderBy>
<FieldRef Name="ID" />
</OrderBy>
</Query>
<ViewFields>
<FieldRef Name="Attachments" />
<FieldRef Name="LinkTitle" />
<FieldRef Name="FirstName" />
<FieldRef Name="Company" />
<FieldRef Name="WorkPhone" />
<FieldRef Name="HomePhone" />
<FieldRef Name="Email" />
<FieldRef Name="TuMuLookup" />
<FieldRef Name="ZhuanYe" />
</ViewFields>
<Joins>
<Join Type="LEFT" ListAlias="TuMu">
<Eq>
<FieldRef Name="TuMuLookup" RefType="ID" />
<FieldRef List="TuMu" Name="ID" />
</Eq>
</Join>
<Join Type="LEFT" ListAlias="ZhuanYe">
<Eq>
<FieldRef List="TuMu" Name="ZhuanYeLookup" RefType="Id" />
<FieldRef List="ZhuanYe" Name="ID" />
</Eq>
</Join>
</Joins>
<ProjectedFields>
<Field List="ZhuanYe" Type="Lookup" Name="ZhuanYe" ShowField="Title" />
</ProjectedFields>
<XslLink Default="TRUE">main.xsl</XslLink>
<RowLimit Paged="TRUE">30</RowLimit>
<Toolbar Type="Standard" />
</View>
解决方法:
采用自定义xsl来解决。
1)在layouts/xsl下增加一个xsl文件:xsl_zhuanye.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">
<xsl:output method="html" indent="no" encoding="uft-8" />
<xsl:include href="/_layouts/xsl/main.xsl" />
<xsl:include href="/_layouts/xsl/internal.xsl" />
<xsl:decimal-format NaN="" />
<xsl:template match="/">
<xsl:apply-templates mode="RootTemplate" select="$XmlDefinition" />
<hr/>
</xsl:template>
<xsl:template name="FieldRef_header.ZhuanYe" match="FieldRef[@Name='ZhuanYe']" mode="header">
<th nowrap="" scope="col" onmouseover="OnChildColumn(this)" class="ms-vh2">
<div class="ms-vh-div">
专业
</div>
</th>
</xsl:template>
</xsl:stylesheet>
备注:<xsl:template match="/"> 模板可以删掉
2)修改列表webpart属性,这是其Xsl链接为/_layouts/xsl/xsl_zhuanye.xsl
3)iisreset清除视图xsl缓存。