Freigeben über


Gewusst wie: Auflisten von Websites und Websitesammlungen

Letzte Änderung: Montag, 12. April 2010

Gilt für: SharePoint Foundation 2010

Verfügbar in SharePoint Online

Sie können alle Websites innerhalb einer Websitesammlung, alle Unterwebsites der ersten Ebene unterhalb einer Website, alle Unterwebsites und Listen für die aktuelle Website oder die Auflistung der Websitesammlungen in einer SharePoint-Webanwendung zurückgeben, wie in den folgenden Beispielen veranschaulicht.

Für jedes Beispiel sind using-Direktiven (Imports in Visual Basic) für den Microsoft.SharePoint-Namespace und den Microsoft.SharePoint.Utilities-Namespace erforderlich. Für das letzte Beispiel muss außerdem der Microsoft.SharePoint.Administration-Namespace importiert werden.

Sie können die folgenden Codeausschnitte in einem Button_Click-Handler aus dem CodeBehind einer Anwendungsseite ausführen, die eine Beschriftung für die Anzeige von Ergebnissen enthalten muss. Weitere Informationen zum Erstellen einer Anwendungsseite, die im Kontext von SharePoint Foundation funktioniert, finden Sie unter Erstellen von Anwendungsseiten für SharePoint. Für jedes Beispiel wird angenommen, dass auf der ASPX-Seite ein Label-Steuerelement vorhanden ist.

Die AllWebs-Eigenschaft der SPSite-Klasse gibt alle Websites in einer Websitesammlung zurück, einschließlich der Website der obersten Ebene und sämtlicher Unterwebsites. Im folgenden Beispiel werden die Titel aller Websites und Listen in der aktuellen Websitesammlung durchlaufen.

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>";
        }
    }
}

Wenn Sie eine Liste aller Unterwebsites der ersten Ebene unterhalb einer bestimmten Website zurückgeben möchten, verwenden Sie die Webs-Eigenschaft der SPWeb-Klasse. Im folgenden Beispiel wird eine Liste aller Titel von Unterwebsites angezeigt. Mit der OpenWeb()-Methode wird die Stammwebsite der angegebenen Websitesammlung geöffnet.

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();
    }
}

Anstelle einer foreach-Anweisung werden im folgenden Beispiel geschachtelte for-Anweisungen verwendet, um die Liste der Unterwebsite-URLs und Listentitel zu durchlaufen.

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>";
        }
    }
}

Im nächsten Codebeispiel werden alle Unterwebsites und Listen der aktuellen Website sowie die Anzahl der Elemente in den einzelnen Listen angezeigt. Im Beispiel werden die Websitesammlungen und Listen mit geschachtelten foreach-Anweisungen durchlaufen.

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();
    }
}

Verwenden Sie die Sites-Eigenschaft der Microsoft.SharePoint.Administration.SPWebApplication-Klasse, um die Auflistung der Websitesammlungen in einer SharePoint-Webanwendung zurückzugeben. Die aktuelle Webanwendung kann mit Eigenschaften der Microsoft.SharePoint.SPContext-Klasse zurückgegeben werden. Im folgenden Codebeispiel werden die URLs aller Websitesammlungen in der aktuellen Webanwendung angezeigt.

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();
}

Zur Leistungsoptimierung werden in den Beispielen des vorliegenden Themas die Websitesammlungs- und Websiteobjekte entfernt, die beim Durchlaufen von Auflistungen instanziiert werden. Weitere Informationen zu optimalen Methoden für das Entfernen von SharePoint Foundation-Objekten finden Sie unter Verwerfen von Objekten.

Siehe auch

Referenz

Microsoft.SharePoint

Konzepte

Arbeiten mit Listenobjekten und Auflistungen

Verwenden von Visual Studio für die SharePoint-Enwicklung

Sicherheitsüberprüfung und POSTs zum Aktualisieren von Daten

Rechteerweiterungen