首页 > 代码库 > 自定义View字段表头

自定义View字段表头

适用场景:

三个列表进行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="http://www.mamicode.com/_layouts/xsl/main.xsl" />  <xsl:include href="http://www.mamicode.com/_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" onm ouseover="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缓存。