zoukankan      html  css  js  c++  java
  • SharePoint 2010 用xsl文件定制列表样式

    SharePoint 2010 用xsl文件定制列表样式

    有时候我们不希望列表用默认的方式显示,要我们自定义的方式定制。其中有一种方式是使用xsl文件。

    在AllItems.aspx页面中,列表是以webpart的形式显示在页面上的,webpart类型是XsltListViewWebPart,当我们编辑web部件的时候,有一个属性是“XSL 链接”,我们就定义一个xsl文件,然后将xsl的文件链接放到这里就完成任务了。

    下面是我的xsl代码,将它保存到customstyle.xsl文件中,将这个文件复制到,/_layouts/xsl/下。

    复制代码
      1 <xsl:stylesheet xmlns:x="http://www.w3.org/2001/XMLSchema" xmlns:d="http://schemas.microsoft.com/sharepoint/dsp" 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" xmlns:o="urn:schemas-microsoft-com:office:office" version="1.0" exclude-result-prefixes="xsl msxsl ddwrt" ddwrt:ghost="show_all">
      2 <xsl:include href="/_layouts/xsl/main.xsl"/>
      3 <xsl:include href="/_layouts/xsl/internal.xsl"/>
      4 <xsl:output method="xml" version="1.0" encoding="UTF-8" indent="yes"/>
      5 <xsl:output method="html" indent="yes"/>
      6 <xsl:template xmlns:x="http://www.w3.org/2001/XMLSchema" xmlns:d="http://schemas.microsoft.com/sharepoint/dsp" xmlns:asp="http://schemas.microsoft.com/ASPNET/20" xmlns:__designer="http://schemas.microsoft.com/WebParts/v2/DataView/designer" xmlns:sharepoint="Microsoft.SharePoint.WebControls" xmlns:o="urn:schemas-microsoft-com:office:office" xmlns:ddwrt="http://schemas.microsoft.com/WebParts/v2/DataView/runtime" match="/" ddwrt:ghost="">
      7 <xsl:variable name="Rows" select="/dsQueryResponse/Rows/Row[$EntityName = '' or (position() >= $FirstRow and position() <= $LastRow)]"/>
      8 <table cellpadding="10" cellspacing="0" border="0" width="100%">
      9 <xsl:for-each select="$Rows">
     10 <xsl:call-template name="RowView"></xsl:call-template>
     11 </xsl:for-each>
     12 <tr>
     13 <td colspan="2">
     14 <xsl:call-template name="pagingButtons"/>
     15 </td>
     16 </tr>
     17 </table>
     18 </xsl:template>
     19 <xsl:template name="RowView">
     20 <xsl:variable name="thisNode" select="."/>
     21 <tr>
     22 <xsl:if test="position() mod 2 = 1">
     23 <xsl:attribute name="class">ms-alternating</xsl:attribute>
     24 </xsl:if>
     25 <td class="ms-vb" style="border-bottom:dotted 1px #333;padding:5px 5px">
     26 <h3 style="padding:0;margin:0;font-size:22px">
     27 <xsl:call-template name="LinkTitleTem"/>
     28 </h3>
     29 <p style="padding:0;margin:0;color:#777">
     30 <span>
     31 <xsl:value-of select="$thisNode/@Author.title" disable-output-escaping="yes"/>
     32 <span style="padding:0 2px">/</span>
     33 <xsl:value-of select="@_x65b0__x95fb__x7c7b__x578b_"/>
     34 <span style="padding:0 2px">/</span>
     35 <xsl:value-of select="ddwrt:FormatDate(string($thisNode/@_x65b0__x95fb__x65f6__x95f4_),2052,3)"/>
     36 </span>
     37 </p>
     38 <div style=" clear:both;height:1px;overflow:hidden;margin-top:-1px"/>
     39 <p style="margin:0px;text-indent:2em;color:#333;font-size:14px;margin-bottom: 5px;line-height: 27px;font-family: Tahoma,'Hiragino Sans Gb','Microsoft YaHei';font-weight: normal;vertical-align: middle;padding-right:20px">
     40 <xsl:value-of select="$thisNode/@_x65b0__x95fb__x7b80__x4ecb_"/>
     41 </p>
     42 <p style="text-align:right;padding-right:30px">
     43 <xsl:call-template name="DocDetails"/>
     44 </p>
     45 </td>
     46 </tr>
     47 </xsl:template>
     48 <xsl:template name="DocDetails">
     49 <xsl:variable name="thisNode" select="."/>
     50 <a>
     51 <xsl:attribute name="href">
     52 <xsl:value-of select="$thisNode/@FileDirRef"/>
     53 customdisp.aspx?id=
     54 <xsl:value-of select="@ID"/>
     55 </xsl:attribute>
     56 <xsl:attribute name="style">
     57 font-size: 12px;font-size: 14px;font-weight: bold;color:#333
     58 </xsl:attribute>
     59 阅读全文
     60 </a>
     61 </xsl:template>
     62 <xsl:template name="LinkTitleTem" ddwrt:ghost="">
     63 <xsl:variable name="thisNode" select="."/>
     64 <a>
     65 <xsl:attribute name="href">
     66 <xsl:value-of select="$thisNode/@FileDirRef"/>
     67 customdisp.aspx?id=
     68 <xsl:value-of select="@ID"/>
     69 </xsl:attribute>
     70 <xsl:attribute name="style">
     71 line-height: 30px;font-size: 16px;color: #333;font-weight: bold;
     72 </xsl:attribute>
     73 <xsl:value-of select="$thisNode/@Title"/>
     74 </a>
     75 </xsl:template>
     76 <xsl:template name="pagingButtons">
     77 <xsl:choose>
     78 <xsl:when test="$XmlDefinition/List/@TemplateType = 106 and $XmlDefinition/@RecurrenceRowset='TRUE'">
     79 <xsl:if test="$dvt_nextpagedata or $dvt_prevpagedata">
     80 <xsl:call-template name="CalendarExpandedRecurrenceFooter"/>
     81 </xsl:if>
     82 </xsl:when>
     83 <xsl:otherwise>
     84 <xsl:if test="$XmlDefinition/RowLimit[@Paged='TRUE']">
     85 <xsl:call-template name="CommandFooter">
     86 <xsl:with-param name="FirstRow" select="$FirstRow"/>
     87 <xsl:with-param name="LastRow" select="$LastRow"/>
     88 <xsl:with-param name="dvt_RowCount" select="$dvt_RowCount"/>
     89 </xsl:call-template>
     90 </xsl:if>
     91 </xsl:otherwise>
     92 </xsl:choose>
     93 </xsl:template>
     94 <xsl:template name="CommandFooter">
     95 <xsl:param name="FirstRow" select="1"/>
     96 <xsl:param name="LastRow" select="1"/>
     97 <xsl:param name="dvt_RowCount" select="1"/>
     98 <xsl:if test="$FirstRow > 1 or $dvt_nextpagedata">
     99 <xsl:call-template name="Navigation">
    100 <xsl:with-param name="FirstRow" select="$FirstRow"/>
    101 <xsl:with-param name="LastRow" select="$LastRow"/>
    102 <xsl:with-param name="dvt_RowCount" select="$dvt_RowCount"/>
    103 </xsl:call-template>
    104 </xsl:if>
    105 </xsl:template>
    106 <xsl:template xmlns:ddwrt2="urn:frontpage:internal" name="Navigation" ddwrt:ghost="">
    107 <xsl:param name="FirstRow" select="1"/>
    108 <xsl:param name="LastRow" select="1"/>
    109 <xsl:param name="dvt_RowCount" select="1"/>
    110 <xsl:variable name="LastRowValue">
    111 <xsl:choose>
    112 <xsl:when test="$EntityName = '' or $LastRow < $RowTotalCount">
    113 <xsl:value-of select="$LastRow"/>
    114 </xsl:when>
    115 <xsl:otherwise>
    116 <xsl:value-of select="$RowTotalCount"/>
    117 </xsl:otherwise>
    118 </xsl:choose>
    119 </xsl:variable>
    120 <xsl:variable name="NextRow">
    121 <xsl:value-of select="$LastRowValue + 1"/>
    122 </xsl:variable>
    123 <table id="bottomPagingCell{$WPQ}" style="font-size:25px;100%;padding:5px;" border="0">
    124 <tr>
    125 <td style="50%">
    126 <xsl:if test="$dvt_firstrow > 1">
    127 <a>
    128 <xsl:choose>
    129 <xsl:when test="$dvt_RowCount = 0 and not($NoAJAX)">
    130 <xsl:attribute name="onclick">
    131 javascript:RefreshPageTo(event, "
    132 <xsl:value-of select="$PagePath"/>
    133 ?
    134 <xsl:value-of select="$ShowWebPart"/>
    135 u0026
    136 <xsl:value-of select="$FieldSortParam"/>
    137 <xsl:value-of select="$SortQueryString"/>
    138 u0026View=
    139 <xsl:value-of select="$View"/>
    140 ");javascript:return false;
    141 </xsl:attribute>
    142 <xsl:attribute name="href">javascript:</xsl:attribute>
    143 <img src="/_layouts/{$LCID}/images/prev.gif" border="0" alt="{$Rows/@idRewind}"/>
    144 <img src="/_layouts/{$LCID}/images/prev.gif" border="0" alt="{$Rows/@idRewind}"/>
    145 </xsl:when>
    146 <xsl:otherwise>
    147 <xsl:variable name="RealRowLimit">
    148 <xsl:choose>
    149 <xsl:when test="$XmlDefinition/Query/GroupBy[@Collapse='TRUE']/@GroupLimit">
    150 <xsl:value-of select="$XmlDefinition/Query/GroupBy[@Collapse='TRUE']/@GroupLimit"/>
    151 </xsl:when>
    152 <xsl:otherwise>
    153 <xsl:value-of select="$XmlDefinition/RowLimit"/>
    154 </xsl:otherwise>
    155 </xsl:choose>
    156 </xsl:variable>
    157 <xsl:choose>
    158 <xsl:when test="not($NoAJAX)">
    159 <xsl:attribute name="onclick">
    160 javascript:RefreshPageTo(event, "
    161 <xsl:value-of select="$PagePath"/>
    162 ?
    163 <xsl:value-of select="$dvt_prevpagedata"/>
    164 <xsl:value-of select="$ShowWebPart"/>
    165 u0026PageFirstRow=
    166 <xsl:value-of select="$FirstRow - $RealRowLimit"/>
    167 u0026
    168 <xsl:value-of select="$FieldSortParam"/>
    169 <xsl:value-of select="$SortQueryString"/>
    170 u0026View=
    171 <xsl:value-of select="$View"/>
    172 ");javascript:return false;
    173 </xsl:attribute>
    174 <xsl:attribute name="href">javascript:</xsl:attribute>
    175 </xsl:when>
    176 <xsl:otherwise>
    177 <xsl:attribute name="href">
    178 javascript:
    179 <xsl:call-template name="GenFireServerEvent">
    180 <xsl:with-param name="param" select="concat('dvt_firstrow={',$FirstRow - $XmlDefinition/RowLimit,'};dvt_startposition={',$dvt_prevpagedata,'}')"/>
    181 </xsl:call-template>
    182 </xsl:attribute>
    183 </xsl:otherwise>
    184 </xsl:choose>
    185 <img src="/_layouts/{$LCID}/images/prev.gif" border="0" alt="{$Rows/@idPrevious}"/>
    186 前一页
    187 </xsl:otherwise>
    188 </xsl:choose>
    189 </a>
    190 </xsl:if>
    191 </td>
    192 <td style="50%" align="right">
    193 <xsl:if test="$LastRowValue < $dvt_RowCount or string-length($dvt_nextpagedata)!=0">
    194 <a>
    195 <xsl:choose>
    196 <xsl:when test="not($NoAJAX)">
    197 <xsl:attribute name="onclick">
    198 javascript:RefreshPageTo(event, "
    199 <xsl:value-of select="$PagePath"/>
    200 ?
    201 <xsl:value-of select="$dvt_nextpagedata"/>
    202 <xsl:value-of select="$ShowWebPart"/>
    203 u0026PageFirstRow=
    204 <xsl:value-of select="$NextRow"/>
    205 u0026
    206 <xsl:value-of select="$FieldSortParam"/>
    207 <xsl:value-of select="$SortQueryString"/>
    208 u0026View=
    209 <xsl:value-of select="$View"/>
    210 ");javascript:return false;
    211 </xsl:attribute>
    212 <xsl:attribute name="href">javascript:</xsl:attribute>
    213 </xsl:when>
    214 <xsl:otherwise>
    215 <xsl:attribute name="href">
    216 javascript:
    217 <xsl:call-template name="GenFireServerEvent">
    218 <xsl:with-param name="param" select="concat('dvt_firstrow={',$NextRow,'};dvt_startposition={',$dvt_nextpagedata,'}')"/>
    219 </xsl:call-template>
    220 </xsl:attribute>
    221 </xsl:otherwise>
    222 </xsl:choose>
    223 后一页
    224 <img src="/_layouts/{$LCID}/images/next.gif" border="0" alt="{$Rows/@tb_nextpage}"/>
    225 </a>
    226 </xsl:if>
    227 </td>
    228 </tr>
    229 </table>
    230 <xsl:if test="not($GroupingRender)">
    231 <script>
    232 var topPagingCell = document.getElementById("topPagingCell
    233 <xsl:value-of select="$WPQ"/>
    234 "); var bottomPagingCell = document.getElementById("bottomPagingCell
    235 <xsl:value-of select="$WPQ"/>
    236 "); if (topPagingCell != null && bottomPagingCell != null) { topPagingCell.innerHTML = bottomPagingCell.innerHTML; }
    237 </script>
    238 </xsl:if>
    239 </xsl:template>
    240 </xsl:stylesheet>
    复制代码

    修改webpart属性为/_layouts/xsl/customstyle.xsl.

    显示效果:

    这种方式将覆盖SharePoint默认的显示样式。

    有的时候我们的列表已经创建了好多,一个一个的修改又很麻烦,下面写了一小段代码,快速的修改webpart属性,如果只有几个列表还是手动修改的比较快,可以根据情况写到控制台程序中。

    复制代码
     1 SPList listdd = web.Lists.TryGetList(list);
     2                         string dfdf = listdd.DefaultViewUrl;
     3                         SPFile file = web.GetFile(dfdf);
     4                         
     5                         SPLimitedWebPartManager limitedWebPartManager = file.GetLimitedWebPartManager(PersonalizationScope.Shared);
     6                         SPLimitedWebPartCollection col = limitedWebPartManager.WebParts;
     7                         foreach (System.Web.UI.WebControls.WebParts.WebPart item in col)
     8                         {
     9                             if (item.GetType().Name == "XsltListViewWebPart")
    10                             {
    11                                 (item as BaseXsltListWebPart).XslLink = "/_layouts/xsl/customstyle.xsl";
    12                                 limitedWebPartManager.SaveChanges(item);
    13                             }
    14                         }
    复制代码
  • 相关阅读:
    使用递归遍历目录
    Isseck 定位文件流
    二:C标准库文件I/O函数
    IPC进程通信
    操作系统知识总结
    Makefile简单使用
    人际交往
    AIX ksh补全命令
    java.lang.IllegalArgumentException: Wildcard string cannot be null or empty.
    WEB项目实现QQ在线推广功能
  • 原文地址:https://www.cnblogs.com/ningang/p/4321805.html
Copyright © 2011-2022 走看看