2009-12-06 2 views
2

J'utilise SharePiont Server 2007 Enterprise avec Windows Server 2008 Enterprise et j'utilise un modèle de portail de publication. Je développe en utilisant VSTS 2008 + C# + .Net 3.5. Je veux savoir comment ajouter un WebPart à toutes les pages d'un site SharePoint? Des échantillons de référence?comment ajouter un WebPart à toutes les pages d'un site SharePoint?

Je souhaite utiliser ce composant WebPart pour afficher des informations communes (mais les informations peuvent changer dynamiquement et c'est pourquoi je choisis un composant WebPart) sur toutes les pages.

Répondre

3

Il existe deux façons de le faire en fonction de votre situation.

Si les sites existent déjà, vous devez itérer sur des sites, en ajoutant la partie web:

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

Si les sites n'existent pas vous pouvez ajouter la partie Web pour le modèle de site:

How to add a web part page to a site definition?

+0

Je dois ajouter WebPart à un site existant. J'ai lu le code du premier message. Il mentionne comment ajouter un composant WebPart de bibliothèque de documents, mais comment ajouter un composant WebPart développé personnalisé? – George2

+0

Merci! Question répondue! – George2

2

est ici le code de premier lien de Shiraz travaillé un peu plus:

(Note: Ce code n'est pas optimisé, par exemple, une boucle à travers une collection de produits de la liste n'est pas quelque chose que vous devriez normalement faire, mais en voyant que cela est sans doute une action du temps il n'y a pas de problème)

private void AddCustomWebPartToAllPages() 
{ 
    using(SPSite site = new SPSite("http://sharepoint")) 
    { 
    GetWebsRecursively(site.OpenWeb()); 
    } 
} 

private void GetWebsRecursively(SPWeb web) 
{ 
    //loop through all pages in the SPWeb's Pages library 
    foreach(var item in web.Lists["Pages"].Items) 
    { 
    SPFile f = item.File; 
    SPLimitedWebPartManager wpm = f.GetLimitedWebPartManager(PersonalizationScope.Shared); 

    //ADD YOUR WEBPART 
    YourCustomWebPart wp = new YourCustomWebPart(); 
    wp.YourCustomWebPartProperty = propertyValue; 
    wpm.AddWebPart(wp, "ZONEID", 1); 
    f.Publish("Added Web Part"); 
    f.Approve("Web Part addition approved"); 
    } 
    // now do this recursively 
    foreach(var subWeb in web.Webs) 
    { 
    GetWebsRecursively(subWeb); 
    } 
    web.Dispose(); 
} 
+0

Cool, merci l'homme! – George2

Questions connexes