Partager via


Procédure : énumérer des sites et des collections de sites

Dernière modification : lundi 12 avril 2010

S’applique à : SharePoint Foundation 2010

Disponible dans SharePoint Online

Vous pouvez renvoyer tous les sites Web dans une collection de sites, les premiers niveaux des sous-sites sous un site Web, tous les sous-sites et les listes du site Web actif ou la collection de collections de sites dans une application Web SharePoint, comme illustré dans les exemples suivants.

Chacun des exemples requiert des directives using (Imports en Visual Basic) pour les espaces de noms Microsoft.SharePoint et Microsoft.SharePoint.Utilities. En outre, le dernier exemple nécessite l’importation de l’espace de noms Microsoft.SharePoint.Administration.

Vous pouvez exécuter les extraits de code suivants dans un gestionnaire de Button_Click à partir du code-behind pour une page d’application, qui doit contenir une étiquette dans laquelle afficher les résultats. Pour plus d’informations sur la façon de créer une page d’application qui fonctionne dans le contexte de SharePoint Foundation, voir Création de pages d’application pour SharePoint. Chaque exemple suppose l’existence d’un contrôle Label sur la page .aspx.

La propriété AllWebs de la classe SPSite renvoie tous les sites Web dans une collection de sites, y compris le site de niveau supérieur et tous les sous-sites. L’exemple suivant énumère les titres de tous les sites Web et listes dans la collection de sites actuelle.

Dim oSiteCollection As SPSite = SPContext.Current.Site
Dim collWebsite As SPWebCollection = oSiteCollection.AllWebs

For i As Integer = 0 To collWebsite.Count - 1
    Using oWebsite As SPWeb = collWebsite(i)
        Dim collList As SPListCollection = oWebsite.Lists
        
        For j As Integer = 0 To collList.Count - 1
            Label1.Text += SPEncode.HtmlEncode(collWebsite(i).Title) & " " & SPEncode.HtmlEncode(collList(j).Title) & "<BR>"
        Next
    End Using
Next
SPSite oSiteCollection = SPContext.Current.Site;
SPWebCollection collWebsite = oSiteCollection.AllWebs;

for (int i = 0; i < collWebsite.Count; i++)
{
    using (SPWeb oWebsite = collWebsite[i])
    {
        SPListCollection collList = oWebsite.Lists;

        for (int j = 0; j < collList.Count; j++)
        {
            Label1.Text += SPEncode.HtmlEncode(collWebsite[i].Title) + "   "
                + SPEncode.HtmlEncode(collList[j].Title) + "<BR>";
        }
    }
}

Pour renvoyer une liste de tous les sous-sites de premier niveau sous un site Web spécifique, utilisez la propriété Webs de la classe SPWeb. L’exemple suivant affiche une liste de titres de sous-sites. La méthode OpenWeb() est utilisée pour ouvrir le site Web racine de la collection de sites spécifiée.

Dim webUrl As String = "https://Server/sites/SiteCollection"
Using oWebsite As SPWeb = New SPSite(webUrl).OpenWeb()
    Dim collWebsite As SPWebCollection = oWebsite.Webs
    
    For Each subSite As SPWeb In collWebsite
        Label1.Text += SPEncode.HtmlEncode(subSite.Title) & "<BR>"
        
        subSite.Close()
    Next
End Using
string webUrl = "https://Server/sites/SiteCollection";

using (SPWeb oWebsite = new SPSite(webUrl).OpenWeb())
{
    SPWebCollection collWebsite = oWebsite.Webs;

    foreach (SPWeb subSite in collWebsite)
    {
        Label1.Text += SPEncode.HtmlEncode(subSite.Title) + "<BR>";
        subSite.Close();
    }
}

Au lieu d’utiliser une instruction foreach, l’exemple de code qui suit utilise des instructions for imbriquées pour énumérer la liste des URL des sous-sites et les titres des listes.

Dim oWebsite As SPWeb = SPContext.Current.Web
Dim subSites As SPWebCollection = oWebsite.Webs

For i As Integer = 0 To subSites.Count - 1
    Using subSite As SPWeb = subSites(i)
        Dim collList As SPListCollection = subSite.Lists
        
        For j As Integer = 0 To collList.Count - 1
            Label1.Text += (subSite.Url & " :: ") + SPEncode.HtmlEncode(collList(j).Title) & "<BR>"
        Next
    End Using
Next
SPWeb oWebsite = SPContext.Current.Web;
SPWebCollection subSites = oWebsite.Webs;

for (int i = 0; i < subSites.Count; i++)
{
    using (SPWeb subSite = subSites[i])
    {
        SPListCollection collList = subSite.Lists;

        for (int j = 0; j < collList.Count; j++)
        {
            Label1.Text += subSite.Url + "   " + 
                SPEncode.HtmlEncode(collList[j].Title) + "<BR>";
        }
    }
}

L’exemple de code suivant affiche les sous-sites et les listes du site Web actif, ainsi que le nombre d’éléments dans chaque liste. Ce code utilise des instructions foreach imbriquées pour itérer les collections de sites Web et les listes.

Dim webUrl As String = "https://Server/sites/SiteCollection"
Using oWebsite As SPWeb = New SPSite(webUrl).OpenWeb()
    Dim subSites As SPWebCollection = oWebsite.Webs
    
    For Each subSite As SPWeb In subSites
        Label1.Text += SPEncode.HtmlEncode(subSite.Title) & "<BR>"
        
        Dim collList As SPListCollection = subSite.Lists
        
        For Each oList As SPList In collList
            Label1.Text += SPEncode.HtmlEncode(oList.Title) & "   " &
                oList.ItemCount.ToString() & "<BR>"
        Next
        
        subSite.Close()
    Next
End Using
string webUrl = "https://Server/sites/SiteCollection";
using (SPWeb oWebsite = new SPSite(webUrl).OpenWeb())
{
    SPWebCollection subSites = oWebsite.Webs;

    foreach (SPWeb subSite in subSites)
    {
        Label1.Text += SPEncode.HtmlEncode(subSite.Title) + "<BR>";

        SPListCollection collList = subSite.Lists;

        foreach (SPList oList in collList)
        {
            Label1.Text += SPEncode.HtmlEncode(oList.Title) + "   " +
                oList.ItemCount.ToString() + "<BR>";
        }

        subSite.Close();
    }
}

Pour renvoyer la collection de collections de sites dans une application Web SharePoint, utilisez la propriété Sites de la classe Microsoft.SharePoint.Administration.SPWebApplication. Utilisez les propriétés de la classe Microsoft.SharePoint.SPContext pour renvoyer l’application Web active. L’exemple de code suivant affiche les URL de toutes les collections de sites dans l’application Web active.

Dim webApplication As SPWebApplication = SPContext.Current.Site.WebApplication
Dim siteCollections As SPSiteCollection = webApplication.Sites

For Each siteCollection As SPSite In siteCollections
    Label1.Text += siteCollection.Url & "<BR>"
    
    siteCollection.Close()
Next
SPWebApplication webApplication = SPContext.Current.Site.WebApplication;
SPSiteCollection siteCollections = webApplication.Sites;

foreach (SPSite siteCollection in siteCollections)
{
    Label1.Text += siteCollection.Url + "<BR>";

    siteCollection.Close();
}

Pour améliorer les performances, les exemples de cette rubrique suppriment les collections de sites et les objets de sites Web qu’elles instancient lors de l’énumération des collections. Pour plus d’informations sur les méthodes conseillées en matière de suppression d’objets SharePoint Foundation, voir Suppression d’objets.

Voir aussi

Référence

Microsoft.SharePoint

Concepts

Utilisation des objets Liste et des collections

Utilisation de Visual Studio pour le développement SharePoint

Validation de la sécurité et utilisation des publications pour la mise à jour des données

Élévation de privilège