我正在使用Windows Server 2008 Enterprise使用SharePoint Server 2007 Enterprise,并且正在使用Publishing Portal模板。我正在使用VSTS 2008 + C# + .NET 3.5开发。

我想知道,如何在SharePoint网站的所有页面上添加WebPart?

有参考样本吗?

我想使用此WebPart显示一些常见信息(但是信息可能会动态变化,这就是为什么我在所有页面上选择WebPart)。

有帮助吗?

解决方案

该信息动态变化并不意味着您必须使用webparts。

当您使用webparts

  • 需要设计人员/贡献者通过添加WebParts或更改WebParts上的属性来更改默认功能,而无需涉及开发人员
  • 有一个特定的原因,例如将其用作过滤器网页,连接的WebParts,Caching等。

对于您正在做的事情,我会建议使用普通的ASP.NET自定义Web控件。

根据要求,可以将其放置在主页或布局页面中。

您还可以选择开发一个委托控制,该控件使您更加灵活地添加新的控件并在不同级别的站点结构上具有不同的行为。有关委托控件的更多信息

Hth Anders Rask

其他提示

我认为WebPart将以任何一种方式工作,因为WebPart只是一个更高级的WebControl。我会做这两种方法之一:

  1. 使用SP Designer将其添加到主页或页面布局中。
  2. 使用功能将其添加到每个页面上

1是如果您需要WebPart存在,没有WebPart区域。您需要更改主页或页面布局的每个不同实例,您将需要控制该控件。大多数人只有一个主页,所以这可能很容易胜利。

2将您限制在具有Web零件区域的页面。请记住,以编程方式添加WebPart要求将其添加到区域中。

添加WebPart的代码看起来像这样:

ContentEditorWebPart webpart = new ContentEditorWebPart();
webpart.ChromeType = PartChromeType.TitleOnly;
webpart.Title = "Content Editor";

XmlDocument xmlDoc = new XmlDocument();
XmlElement xmlElement = xmlDoc.CreateElement("MyElement");
xmlElement.InnerText = "My Text";
webpart.Content = xmlElement;        

using (SPLimitedWebPartManager mgr = web.GetLimitedWebPartManager(pageUrl, System.Web.UI.WebControls.WebParts.PersonalizationScope.Shared))
{
    try
    {
    	mgr.AddWebPart(webPart, "MiddleLeftZone", 0);
    }
    finally
    {
    	if (mgr != null &&
    		mgr.Web != null)
    	{
    		mgr.Web.Dispose();
    	}
    }
}

根据您的情况,有两种方法可以做到这一点。

如果已经存在站点,则需要在网站上进行迭代,并添加Web部分:

http://blogs.msdn.com/tconte/archive/2007/01/18/programmatily-adding-web-parts-to-a-page.aspx

如果网站不存在,则可以将Web零件添加到网站模板中:

https://stackoverflow.com/questions/234302/how-to-to-add-a-web-part-part-page-to-a-site-definition

许可以下: CC-BY-SA归因
scroll top