在MOSS相关的项目中,我们经常要将内容聚合到首页:比方说新闻、通知、文档等内容,由于首页内容相对较多,因此要对各部分内容显示的区域加以限制,才能保证整个页面布局的和谐与统一,限制标题显示的字符数,就成了一个必须的要求。MOSS的文档库和列表本身的试图并不提供本身的功能,所以要实现这样的功能就必须自己动手,一是写自己的webpart,取出库和列表的内容,然后按照自己的要求去展示内容,这种方法的优点是通用性强,并且可以将webpart写的更加通用些,一次投入就一直受益,适合有开发能力的公司或个人;这种方法在SPS2003下就有人做了相应的工作。
那么,对于像我这样的专注于系统而没有开发经验的人来说,是不是就没有办法了呢?答案当然是否定的!在Sharepoint designer中,有一项神奇的功能,可以将MOSS的库和列表转换成XSLT数据视图,借助于XSLT,我们可以灵活的控制内容展示的形式。
比如,我们想对这个列表的标题的字数加以限制,当字数<=12时,则显示全部的标题,如果字数>12,则截取前面的9个字,并在后面加上...
在SPD中找到我们插入页面的库或列表,右键,选择转换成XSLT试图。
对于列表,选择列表的标题,对应的XSL代码为:
<xsl:value-of disable-output-escaping="no" select="@Title" />
将代码替换为:
<xsl:if test="string-length(@Title)<=12"> 判断如果标题的字符串长度是否<=12
<xsl:value-of disable-output-escaping="no" select="@Title" /> 显示完整标题:select="@Title"
</xsl:if>
<xsl:if test="string-length(@Title)>12"> 判断如果标题的字符串长度是否>12
<xsl:value-of select="substring(string(@Title),1,9)" />... 显示标题的前9个字符,并在后面加上 ...
</xsl:if>
对于文档库,select的值不是标题,而是将文件名处理后的标题,代码如下:
<xsl:value-of select="ddwrt:UrlBaseName(string(@LinkFilename))" />
我们需要将对应的代码修改如下:
<xsl:if test="string-length(@LinkFilename)<=12">
<xsl:value-of select="ddwrt:UrlBaseName(string(@LinkFilename))" />
</xsl:if>
<xsl:if test="string-length(@LinkFilename)>12">
<xsl:value-of select="substring(ddwrt:UrlBaseName(string(@LinkFilename)),1,9)" />...
</xsl:if>
美中不足的是,我发现代码中对于字符串的计数是不分全角半角的,统统按照一个计算,这样的话,如果标题或文件名中如果包含了半角的字母或数字,所显示的结果就不会如我们的想象一样,是一个固定的长度,不过,对于标题过长从而换行导致的布局问题,总算是解决了!
注:文中标题部分的代码,参考了西安huahua同学在MOSS群中的讨论,才使得我对这个问题有了一个完整的认识,在此表示感谢!
转战ERP领域,欢迎交流,微信:Guobower,QQ:124358678