1

我有一个在 Project Server 安装的布局目录中复制的 aspx 页面。aspx 是具有 Web 部件区域的 Web 部件页面。如何在 Web 部件区域内的页面标记中添加 Web 部件?

4

2 回答 2

6

您可以使用 SPLimitedWebPart 管理器在运行时添加 Web 部件的实例。我在我们的 MySites 上执行此操作以控制组织需要的 Web 部件的添加、删除和移动。您可以将代码放在aspx页面中。

SPFile thePage = currentWeb.RootFolder.Files["default.aspx"]
using (Microsoft.SharePoint.WebPartPages.SPLimitedWebPartManager spLimitedWPManager = thePage.GetLimitedWebPartManager(System.Web.UI.WebControls.WebParts.PersonalizationScope.Shared))
{
       Assembly assembly = Assembly.Load("WebPartAssemblyName");
       WebPart webPart = (WebPart)assembly.CreateInstance("WebPartClassName");

       spLimitedWPManager.AddWebPart(webPart, ZoneId, ZoneIndex);
}

您可能需要执行一些不同的操作才能访问您的布局页面的 Web 部件管理器。在此之后,您需要重定向回页面以显示更改。您还需要存储一个位值以确保您不会在每次后续访问时执行该操作。

如果您只需要这样做一次,那么我可能会推荐 PowerShell。

否则,您可以通过注册标记直接在 MarkUp 中添加 Web 部件:

<%@ Register TagPrefix="ABC" Namespace="Namespace" Assembly="Assembly" %>

并直接添加 Web 部件,

<ABC:ClassName ID="ControlID" FrameType="None" runat="server" __WebPartId="YouWebPartGUID" WebPart="true" />

但是我们没有在网络区域内执行此操作,因为我们不想允许将其删除,所以我不知道它是否适用于这种情况。这是最简单的,但不允许进行任何自定义,而且 SharePoint 并不真正“了解”Web 部件。

于 2009-02-17T18:11:35.353 回答
3

布局目录中不能有可自定义的 Web 部件页面!这仅在存储在文档库或 SPWeb 中的其他文件夹中的 Web 部件页面上受支持,即您可以获得 SPFile 引用的 ASPX 文件。layouts 目录中 ASPX 页面上的 Web 部件必须作为 Web 控件添加到 ASPX 源中。

于 2009-02-17T21:04:03.830 回答