2010-12-08 4 views
0

J'ai une liste d'images sur chaque site Web (SPWeb) d'un SiteCollection. Je veux définir une propriété spécifique de cette liste. Je suis itérer à travers tous les sites avec un SiteCollection et trouver la liste et définir ses propriétés. Mon problème est que je peux définir les propriétés d'une liste présente aux sites de premier niveau, mais ne peut pas définir les propriétés des listes, présentes aux sites de deuxième ou troisième niveau. Par exemple,Les propriétés de la liste ne sont pas mises à jour

Voici la hiérarchie du site:

Accueil (rootweb) 1er niveau

Maison-> Aboutus (subsite) 2e niveau

Maison-> Aboutus-> Notre mission (sous-site) 3e niveau

voici le code pour cela!

using (SPSite oSPsite = new SPSite(http://spdev/)) 
{     
    foreach (SPWeb web in oSPsite.AllWebs) 
    { 
     SPList list = web.GetList("PublishingImages"); 
     if (list != null) 
     { 
      foreach (SPContentType contentType in list.ContentTypes) 
      { 
       if (contentType.Name == "Publishing Picture")// but id is better 
       { 
        list.EnableModeration = false; 
        list.Update(); 
       } 
      } 
     } 
     web.Dispose(); 
    } 
}     

Est-ce parce que je mets le parent en premier?

+0

GetList() prend une URL non seulement le nom de la liste, donc si cela fonctionne avec la collection Lists alors l'URL est votre problème. En fait, web.Lists.TryGetLists ("listName") est encore meilleur si vous êtes dans la famille 2010. – knight0323

+0

list.EnableModeration n'est pas pris en charge par les bibliothèques d'images et il s'agit d'une question dupliquée –

+0

duplication possible de [Comment faire une boucle à partir d'un site Web racine et de tous ses sous-sites] (http://stackoverflow.com/questions/4386186/how-to -loop-through-from-a-root-web-and-all-its-subsites) –

Répondre

1

En supposant que le nom de la liste est la même sur tous les sites (PublishingImages) et vous êtes sur WSS 3.0 ou MOSS07 est l'exemple de code ici:

using (SPSite oSPsite = new SPSite("yourSiteUrlHere")) 
{ 
    SPWebCollection siteWebs = oSPsite.AllWebs; 
    foreach (SPWeb web in siteWebs) 
    { 
     try 
     {    
      SPList list = null; 
      try 
      { 
       list = web.Lists["PublishingImages"]; 
      } 
      catch {} 

      if (list != null) 
      { 
       // todo: update list properties here 
       list.Update(); 
      } 
     } 
     finally 
     { 
      if(web != null) 
       web.Dispose(); 
     } 
    } 
} 

Comme mentionné Ashutosh, il y a quelques propriétés qui n » Je travaille sur tous les types de liste, mais je suppose que puisque vous avez déjà déclaré que cela fonctionne sur certains d'entre eux, vous ne définissez aucun de ceux-ci. Essayez la collection Lists au lieu de GetList().

+0

Salut Knight, je suis sur MOSS2007 alors quelle propriété va fonctionner avec? –

+0

Quelles sont les propriétés spécifiques que vous essayez de mettre à jour dans chaque liste? Je mettrai à jour le code pour répondre à vos besoins spécifiques. Liste des propriétés 2007: http://msdn.microsoft.com/fr-fr/library/microsoft.sharepoint.splist_properties(v=office.12).aspx – knight0323

+0

merci Chevalier !! Je l'ai fait en utilisant cette fonction :) –

Questions connexes