我在一个网站上有一个公告列表。我想将它作为 Web 部件添加到每个子站点的顶部。我怎样才能在 MOSS 中做到这一点?
6 回答
在这种情况下,我使用了数据视图 Web 部件。创建 Web 服务数据源以从其他站点的列表中获取数据。
很像这样:
几点。
首先,您指定您使用的是 WSS 3.0,因此 CQWP 不可用(您需要 MOSS 并打开发布以使其可用)。增强的社区版也不适合您,因为它源自 CQWP。
其次,我同意 Eugene Katz 的观点,即 DataFormWebPart 将是一种简单的方法,而且我的生成方式与他发布的链接略有不同。在 Sharepoint Designer 中,打开要放置 Web 部件的所需站点。从任务窗格菜单中选择数据源库,然后单击窗格底部的“连接到另一个库...”,然后浏览/选择包含公告列表的父站点。现在,您可以从“数据源库”窗格上新创建的节点将您的公告添加为 DataFormWebPart,就像它在您的站点上一样。如果您不熟悉,Sharepoint Designer 帮助将显示如何执行此操作。
根据自己的喜好设置 DataFormWebPart 后,您可以通过执行以下操作更轻松地将其添加到其他站点:突出显示新构建的 DataFormWebPart 并选择文件/导出/将 Web 部件保存到.../站点库。它现在将作为可添加的 Web 部件在整个网站集中提供。
您应该使用 SharePoint 对象模型获取该特定列表的 SPList 对象。一旦你得到相同的结果,你就可以使用 RenderAsHtml() 方法渲染列表。请注意,RenderAsHtml() 方法将 SPQuery 对象作为参数。您需要使用适当的查询字符串创建一个 SPQuery 对象。此代码可能会覆盖自定义 Web 部件的 RenderWebPart() 方法:
SPSite 站点 = 新 SPSite(siteURL);
SPWeb web = site.OpenWeb(webName);
SPList 列表 = web.Lists[listName];
SPQuery 查询 = 新 SPQuery();
查询.查询 = 查询字符串;
字符串 html = list.RenderAsHtml(query);
输出.Write(html); //输出是RenderWebPart方法中的HtmlTextWriter对象。
内容查询 Web 部件或开源增强内容查询 Web 部件是完成此任务的好方法。如果您没有 MOSS 但有 WSS,Katz 先生和 Ashwin 先生的答案是可以接受的,但回答这个问题的方法不同。
Codeplex 上的 Content By Type Web 部件是一个非常棒的 Web 部件。它还支持从任何子站点的任何列表中显示给定内容类型的项目。
见: http: //www.codeplex.com/eoffice