内容查询Web部件(Content Query Web Part,简称CQWP)是SharePoint中一个非常实用的组件,它允许从网站集合中的不同列表或库中检索内容,并以想要的方式显示。本文将介绍如何在SharePoint 2010中自定义CQWP,以展示子站点中的供应商列表列,而无需编写任何代码或进行部署。
要开始自定义CQWP,首先需要在SharePoint2010的父站点首页插入该Web部件。打开SharePoint 2010的首页,点击“站点操作”,然后选择“编辑页面”。页面将进入编辑模式。在编辑工具中选择“插入Web部件”,点击“内容汇总”类别,然后选择“内容查询”并点击“添加”按钮。
编辑Web部件属性,在查询部分,选择“显示以下列表中的项目”,点击浏览按钮,导航到子站点并选择供应商自定义列表。现在选择以下附加设置,根据需求进行设置,并点击“确定”以保存对CQWP的更改,它将在Web部件中显示标题列。
在CQWP中点击并选择“导出”选项,将.webpart文件保存到桌面位置。打开导出的.webpart文件,在编辑属性之前,请参考以下说明。所有列名应指定为SharePoint内部名称。SharePoint字段的内部名称与显示名称不同。例如,如果列名包含任何空格,内部名称将用_x0020_编码。这些字段中的值非常敏感,错误位置的空格或分号会导致它失效。不要在文件中的标签之间包含任何额外的空格。
编辑Web部件,导航到样式部分以查看样式属性,它将类似于以下屏幕截图。在这里,项目样式下拉菜单将显示所有默认样式,需要通过以下步骤进行自定义。CQWP使用位于网站集合的样式库中的ItemStyle.xsl文件。通过编辑ItemStyle.xsl文件,可以添加自定义项目样式,可以从CQWP中选择以显示所有供应商列表字段及其标题。
打开站点的首页,点击“站点操作”,然后点击“编辑页面”。现在在CQWP上点击编辑,然后点击“修改共享Web部件”,展开“呈现”类别。在样式部分选择“VendorCustomStyle”从项目样式框中。现在点击Web部件窗格中的“确定”以应用自定义样式。现在内容查询Web部件使用VendorCustomStyle并渲染多列标题。
以下是使用标题的输出示例。
<xsl:template name="VendorCustomStyle" match="Row[@Style='VendorCustomStyle']" mode="itemstyle">
<html>
<table width="100%">
<xsl:if test="count(preceding-sibling::*)=0">
<tr>
<td width="8%" valign="top"><div class="item"><b>供应商ID</b></div></td>
<td width="12%" valign="top"><div class="item"><b>供应商名称</b></div></td>
<td width="50%" valign="top"><div class="item"><b>供应商描述</b></div></td>
<td width="10%" valign="top"><div class="item"><b>供应商国家</b></div></td>
<td width="10%" valign="top"><div class="item"><b>供应商日期</b></div></td>
<td width="10%" valign="top"><div class="item"><b>创建者</b></div></td>
</tr>
</xsl:if>
<tr>
<td width="8%" valign="top"><div class="item"><xsl:value-of select="@VendorID"/></div></td>
<td width="12%" valign="top"><div class="item"><xsl:value-of select="@Title"/></div></td>
<td width="50%" valign="top"><div class="item"><xsl:value-of select="@Vendor_x005F_x0020_Description" disable-output-escaping="yes"/></div></td>
<td width="10%" valign="top"><div class="item"><xsl:value-of select="@Vendor_x005F_x0020_Country"/></div></td>
<td width="10%" valign="top"><div class="item"><xsl:value-of select="@Vendor_x005F_x0020_Date"/></div></td>
<td width="10%" valign="top"><div class="item"><xsl:value-of select="@Author"/></div></td>
</tr>
</table>
</html>
</xsl:template>