如何使用MOSS中其他站点的列表?

时间:2020-03-06 14:21:29  来源:igfitidea点击:

我在一个站点上有一个公告列表。我想将其作为Web部件添加到每个子站点的顶部。如何在MOSS中做到这一点?

解决方案

在这种情况下,我使用了数据视图Web部件。创建一个Web服务数据源以从另一个站点的列表中获取数据。

很像这样:

http://www.sharepointblogs.com/ssa/archive/2007/02/23/showing-web-service-data-in-a-data-view-web-part.aspx

开箱即用是不可能的。列表仅限于一个站点。

我们唯一的选择是使用内容查询Web部件(在SharePoint Standard或者更高版本中可用)。

这是使用CQWP的方法。

这里也有增强的社区版。

我们可以将它们嵌入子站点模板中。

我们应该使用SharePoint对象模型来获取该特定列表的SPList对象。一旦获得相同的效果,就可以使用RenderAsHtml()方法呈现列表。请注意,RenderAsHtml()方法采用SPQuery对象作为参数。我们需要使用适当的查询字符串创建一个SPQuery对象。此代码可以进入自定义Webpart的RenderWebPart()方法的重写中:

SPSite网站=新的SPSite(siteURL);

SPWeb网站= site.OpenWeb(webName);

SPList list = web.Lists [listName];

SPQuery查询=新的SPQuery();

query.Query = queryString;

字符串html = list.RenderAsHtml(query);

output.Write(html); //输出是RenderWebPart方法中的HtmlTextWriter对象。

内容查询Web部件或者开放源代码的增强型内容查询Web部件是实现此目的的好方法。如果我们没有WSS,但没有WSS,则可以接受Katz先生和Ashwin先生的回答,但可以采用不同的方式回答此问题。

有两点。

首先,我们指定使用的是WSS 3.0,因此CQWP不可用(我们需要MOSS并启用发布才能使其可用)。增强的社区版本也不适用于我们,因为它源自CQWP。

其次,我同意Eugene Katz的观点,即DataFormWebPart是一种简单的方法,并且与他发布的链接相比,我的生成方式略有不同。在Sharepoint Designer中,打开要放置Web部件的所需站点。从"任务窗格"菜单中选择"数据源库",然后单击窗格底部的"连接到另一个库...",然后浏览/选择包含公告列表的父站点。现在,我们可以从"数据源库"窗格上新创建的节点中将公告作为DataFormWebPart添加,就像在站点上一样。如果我们不熟悉,Sharepoint Designer帮助将显示如何执行此操作。

在按自己的喜好设置DataFormWebPart之后,可以通过以下操作使添加到其他站点更加容易:突出显示新建的DataFormWebPart并选择"文件/导出/将Web部件保存到... /站点库"。现在,它将作为可添加的Web部件在整个网站集中提供。

一个非常好的Web部件是Codeplex上的Content By Type Web部件。它还支持显示任何子站点中任何列表中给定内容类型的项目。

请参阅:http://www.codeplex.com/eoffice