SharePoint Foundation 锁定为只能显示同一个网站下的列表数据源,幸亏有SharePoint WebService,使得我们有办法解决该问题。
这里我们用到的WebService是 http://ServerName/_vti_bin/List.asmx。
准备工作
为了演示,我们创建一个带有筛选条件的列表,只要勾选了"发布到主站点"(注意:这不是一个内置的栏,需要你手工创建)的列表项都将显示在我们最终的结果页面上。
这是一种隔离小组站点和企业公共站点访问的很好的方式。可以将通知集中显示在一个位置,访问通知的用户可以不必具有小组站点的访问权限,而维护权可以下放到各个小组。
需要一个视图来筛选发布的数据。
1、打开列表设置。
在页面下方找到“创建视图”,点击。
选择标准视图
根据“发布到主站点”一栏对视图进行筛选。
这样,视图就建好了。点击它来查看列表和视图ID。
这里要把“%20”替换成“-”。本例中显示的列表ID为626e3c75%2D735e%2D4be6%2Dbb5d%2D9156cb780ae0 ,替换后为626e3c75-735e-4be6-bb5d-9156cb780ae0 。视图ID也是如此。记下来以便在下面的步骤中使用。
列表数据源的准备工作完成了。
开始
首先,我们需要在SharePoint Designer中创建一个数据源。打开SharePoint Designer并连接到目标站点(也就是将要在上面显示通知的站点)。
点击左侧导航区的“数据源”,点击SOAP服务连接,以便开始定义我们的数据源。
服务说明位置:填写通知列表所在的站点对应的列表WebService地址,本例中为http://sp2010u/it/_vti_bin/Lists.asmx:WSDL
数据命令:选择
端口:ListsSoap
操作:GetListItems
参数:我们需要填写listname和viewname,值为上面我们记下的列表和视图ID。
转到常规选项卡,起一个名字。
接下来在登录选项卡中定义安全上下文。注意:如果使用Windows身份验证的话,你需要在通知列表上为用户配置查看权限,以便可以访问通知。这里我们使用的是两层发布(正如上面我们讨论的一样),并不想为每个用户指定访问权限,因此选择了指定访问凭据的方式。
然后,打开我们需要显示通知内容的页面,插入一个数据视图。选择前面创建的SOAP服务。
通知列表就会显示在页面上。但是你需要做一些清理工作。比如修改标题栏的文字,将正文字段格式化为RTF(富文本),删除作者一栏中的一些特殊字符(可以通过修改字段的xslt为<xsl:value-of select="substring-after(@ows_Author,'#')"/>)等等。
完成!
另一个小技巧是:你可以合并不同列表的数据。比如从多个小组站点中发布的通知,合并后统一显示在主站点中。只需要使用“链接数据源”并选择需要合并的列表即可。
参考资料
Displaying a SharePoint List from another team site in SharePoint Foundation 2010