现在的位置: 首页 > 综合 > 正文

关于XSLT分栏显示技巧

2012年07月30日 ⁄ 综合 ⁄ 共 906字 ⁄ 字号 评论关闭

今天在用sharepoint 2007定制一个列表时,需要将数据分栏显示,比较复杂的是数据先要分组,将重复的记录过滤掉,Sharepoint提供了一个方法将数据分组,代码如下

<xsl:variable name="NewGroup_1">

  <xsl:choose>

   <xsl:when test="not ($dvt_groupfield)"><xsl:value-of select="ddwrt:NameChanged(string(@Title), 1)" /></xsl:when>

   <xsl:otherwise></xsl:otherwise>

   </xsl:choose>

 </xsl:variable>

....

<xsl:when test="not($dvt_groupfield) and (not($NewGroup_1='') and position() &gt;= $FirstRow and position() &lt;= $LastRow or ($FirstRow = position()))">

.....

</xsl:when>

如果没有分组,我可以通过position() mod 分栏数 = 0 来判断分栏位置,如下代码4列分行

<xsl:if test="(position() mod 4) = 0">     

  <br/>

</xsl:if>

但是数据是通过分组获得,position()不是真正的当前记录号,可能是一个断断续续的一组数字,想了很多办法没有一个简单的取到分组后的记录号值,最后解决是通过样式表和宽度来解决:

每一组数据显示内容:

<div style="float:left;width:150px;margin-top:35px;">

  .... 显示内容

</div>

内容外的表格设置

<table border="0">

  <tr><td width="600px">   

这里的宽度是根据4列内容是大宽度设置,div当超过宽度后自动换行

 

我想这是一个取巧的方法,如果样式要求比较复杂时可能要另想办法,我想这个方法还可以写得更复杂一些,通过修改一个列数参数达到改变栏数的目的,如果哪一位朋友有更好的方法,请告诉我,谢谢!

 

抱歉!评论已关闭.