在 aspx 标记中将 Web 部件添加到 sharepoint 页面

发布于 2024-07-13 22:54:54 字数 115 浏览 8 评论 0原文

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

I have an aspx page that get copied in the layouts directory of a Project Server instalation. The aspx is a web part page that has a web part zone. How can I add a web part in the markup of the page, within the web part zone?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

失眠症患者 2024-07-20 22:54:54

您可以使用 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。

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

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

并直接添加 Web 部件,

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

但我们没有在 Web 区域内执行此操作,因为我们不想允许它被删除,所以我不知道如果它在那种情况下有效。 这是最简单的,但不允许进行任何自定义,并且 SharePoint 并不真正“了解”Web 部件。

You can use the SPLimitedWebPart manager to add an instance of a web part at runtime. I do this on our MySites to control adding, deleting and moving web parts that the organization requires. You can put the code in the aspx page.

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);
}

You may need to do something different to gain access to the Web Part Manager for your layouts page. After this you need to redirect back to the page to display the changes. You'll also want to store a bit value to ensure that you do not perform the action on each subsequent visit.

If you only need to do this once then I might recommend PowerShell instead.

Otherwise you can add the web part directly in MarkUp by registering the tag:

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

and directly adding the web part,

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

but we didn't do it inside of a web zone because we did not want to allow it to be removed so I do not know if it works in that scenario. This is easiest but doesn't allow for any customization and SharePoint doesn't really "know" about the web part.

流殇 2024-07-20 22:54:54

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

You cannot have customizable Web Part pages in the layouts directory! This is only supported on Web Part pages stored in a document library or other folder in an SPWeb, i.e. ASPX files that you can get an SPFile reference to. Web Parts on ASPX pages in the layouts directory must be added as Web controls in the ASPX source.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文