2009-02-17 79 views
1

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

+0

对于任何其他人看到这个问题,并希望将webparts嵌入aspx页面,我已经开始了一个相关的问题(但仍然非常不同,我的基于aspx页面被放在sharepoint网站的页面布局部分。 ://stackoverflow.com/questions/31229284/how-to-embed-sharepoint-2013-webparts-directly-in-aspx-layout-page-as-default-we – redfox05 2015-07-05 10:16:17

回答

3

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

+0

我看到了,但它似乎是ProjectCenter页面(http ://ps/pwa/projects.aspx - 用于我的安装)是布局目录中的Web部件页面。是否有解决方法可以创建类似的Web部件页? – kjv 2009-02-18 09:09:29

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。

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

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

,并直接添加Web部件,

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

,但我们没有做到这一点的内因为我们不想让它被删除,所以我不知道它是否适用于这种情况。这是最简单的,但不允许任何自定义,并且SharePoint不会真正“知道”Web部件。

相关问题