2010-12-08 22 views
2

Je suis tombé sur un problème que je devais résoudre. Je veux faire une boucle à travers un site Web racine et tous ses sous-sites, et que vous souhaitez définir certaines propriétésComment faire une boucle à partir d'un site Web racine et de tous ses sous-sites

+0

Je vous ai fourni la solution pour la même chose, mais une correction que vous ne pouvez pas appliquer la même pour la bibliothèque d'image en tant que bibliothèque d'images ne supporte pas l'approbation du contenu, donc si vous devez appliquer la solution à un autre type de liste, vous pouvez le faire –

+0

merci pour le code mais comment puis-je définir les propriétés des listes d'images dans chaque webs? –

Répondre

2
using (SPSite oSPsite = SpSecurityHelper.GetElevatedSite(GetSiteCollection(properties))) 
     { 
      SPWebCollection siteWebs = oSPsite.AllWebs; 
      foreach (SPWeb web in siteWebs) 
      { 
       try 
       { 
        SPList list = null; 
        try 
        { 
         list = web.Lists["Images"]; 
        } 
        catch { } 

        if (list != null) 
        { 

         list.EnableModeration = isEnabled == false ? false: true; 
         list.Update(); 
        } 
       } 
       finally 
       { 
        if (web != null) 
         web.Dispose(); 
       } 
      } 
     } 
5
using System; 
using System.Collections.Generic; 
using System.Linq; 
using System.Text; 
using Microsoft.SharePoint; 

namespace ConsoleApplication2 
{ 
    class Program 
    { 
     static void Main(string[] args) 
     { 
      using (SPSite oSPsite = new SPSite("http://sharepointdev:2021")) 
      { 
       using (SPWeb oSPWeb = oSPsite.OpenWeb()) 
       { 
        foreach (SPList list in oSPWeb.Lists) 
        { 
         if (list.ContentTypes.Count > 0) 
         { 

          foreach (SPContentType contentType in list.ContentTypes) 
          { 
           if (contentType.Name == "Document") 
           { 
            list.EnableModeration = true; 
            list.Update(); 
           } 
          } 
         } 
        } 

        if(oSPWeb.Webs.Count > 0) 
        recursivewebcheck(oSPWeb); 
       } 
      } 
     } 



     static void recursivewebcheck(SPWeb oSPWeb) 
     { 

      foreach (SPWeb web in oSPWeb.Webs) 
      { 
       foreach (SPList list in oSPWeb.Lists) 
       { 
        if (list.ContentTypes.Count > 0) 
        { 

         foreach (SPContentType contentType in list.ContentTypes) 
         { 
          if (contentType.Name == "Document") 
          { 
           list.EnableModeration = true; 
           list.Update(); 
          } 
         } 
        } 
       } 

       if (web.Webs.Count > 0) 
       { 
        recursivewebcheck(web); 
       } 
       web.Dispose(); 
      } 

     } 
    } 
} 
+0

cette solution est pour la bibliothèque de documents et bien testé –

+0

Ceci est seulement en boucle sur toutes les listes dans le web racine, n'est ce pas? –

+0

pas son bouclage à travers tous les sites présents sous une collection de sites –