Freigeben über


Gewusst wie: Erstellen oder Löschen von Listen

Letzte Änderung: Freitag, 27. Mai 2011

Gilt für: SharePoint Foundation 2010

Inhalt dieses Artikels
Erstellen einer Liste mit einem Listenvorlagentyp
Erstellen einer Liste mit einer Listenvorlage
Löschen einer Liste

Verfügbar in SharePoint Online

In den Beispielen dieses Themas wird die Verwendung des SharePoint Foundation-Serverobjektmodells zur Verwendung von Listen in einer Website oder Websitesammlung erläutert.

HinweisHinweis

In den Codebeispielen dieses Themas werden Elemente der Microsoft.SharePoint.SPContext-Klasse zum Abrufen der aktuellen Websitesammlung, Website oder Liste verwendet. Außerhalb eines HTTP-Kontexts, beispielsweise in einer Konsolenanwendung oder einer Windows-Anwendung, rufen Sie Verweise auf wichtige Objekte mit einer anderen Methode ab. An Stelle des Microsoft.SharePoint.SPContext-Objekts verwenden Sie den SPSite()-Konstruktor, um eine bestimmte Websitesammlung zu instanziieren und Objekte abzurufen. Weitere Informationen finden Sie unter Abrufen von Verweisen auf Websites, Webanwendungen und andere Schlüsselobjekte.

Erstellen einer Liste mit einem Listenvorlagentyp

Wenn Sie eine neue Liste erstellen möchten, verwenden Sie eine der Add()-Methodenüberlagerungen der SPListCollection-Klasse.

Im folgenden Beispiel wird basierend auf der Benutzereingabe eine neue allgemeine Liste, eine Ereignisliste oder eine Ankündigungsliste erstellt. Mit einer Switch-Klausel wird der vom Benutzer angegebene Listentyp bestimmt, und der Listenvorlagentyp wird entsprechend festgelegt.

Dim mySite As SPWeb = SPContext.Current.Web
Dim lists As SPListCollection = mySite.Lists

Dim listTitle As String = TextBox1.Text
Dim listDescription As String = TextBox2.Text
Dim listType As String = ListBox1.SelectedItem.Text

Dim listTemplateType As New SPListTemplateType()

Select Case listType
    Case "Generic List"
        listTemplateType = SPListTemplateType.GenericList
        Exit 
    Case "Events"
        listTemplateType = SPListTemplateType.Events
        Exit
    Case "Announcements"
        listTemplateType = SPListTemplateType.Announcements
        Exit 
End Select
lists.Add(listTitle, listDescription, listTemplateType)
SPWeb mySite = SPContext.Current.Web;
SPListCollection lists = mySite.Lists;

string listTitle = TextBox1.Text;
string listDescription = TextBox2.Text;
string listType = ListBox1.SelectedItem.Text;

SPListTemplateType listTemplateType = new SPListTemplateType();

switch(listType)
{
    case "Generic List":
    {
        listTemplateType = SPListTemplateType.GenericList;
        break;
    }

    case "Events":
    {
        listTemplateType = SPListTemplateType.Events;
        break;
    }

    case "Announcements":
    {
        listTemplateType = SPListTemplateType.Announcements;
        break;
    }
}

lists.Add(listTitle, listDescription, listTemplateType);

Im Beispiel wird ein SPListTemplateType-Objekt instanziiert, das den vom Benutzer angegebenen Listenvorlagentyp enthält. Dieses Objekt muss als Parameter in der Add(String, String, SPListTemplateType)-Methode übergeben werden. Im Beispiel wird vorausgesetzt, dass zwei Textfelder vorhanden sind, in die der Benutzer einen Titel und eine Beschreibung eingeben kann. Zudem muss eine Dropdownliste vorhanden sein, in der die Listentypen aufgeführt sind, aus denen der Benutzer auswählen kann.

Erstellen einer Liste mit einer Listenvorlage

Zusätzlich zur Verwendung der SPListTemplateType-Enumeration zum Erstellen einer Liste aus einem Vorlagentyp können Sie auch eine Liste aus einem SPListTemplate-Objekt erstellen, das entweder eine bestimmte Listenvorlage darstellt, die in der Benutzeroberfläche durch Speichern einer vorhandenen Liste als Vorlage erstellt wurde, oder ein Listenschema in %ProgramFiles%\Common Files\Microsoft Shared\web server extensions\14\TEMPLATE\FEATURES, das einen Listentyp definiert. Die ListTemplates-Eigenschaft der SPWeb-Klasse kann verwendet werden, um eine Auflistung der Listenvorlagenobjekte zurückzugeben, und mit einer Namensindexerstellung kann die zu verwendende Listenvorlage angegeben werden. Dies wird im folgenden Beispiel gezeigt, in dem das Vorhandensein einer Website Decision Meetings Workspace vorausgesetzt wird.

Dim mySite As SPWeb = SPContext.Current.Web

Dim template As SPListTemplate = mySite.ListTemplates("Decisions")
mySite.Lists.Add("My Decisions", "This is a list of decisions", 
   template)
SPWeb mySite = SPContext.Current.Web;

SPListTemplate template = mySite.ListTemplates["Decisions"];
mySite.Lists.Add("My Decisions", "This is a list of decisions", 
   template);

Im nächsten Beispiel wird die GetCustomListTemplates-Methode der SPSite-Klasse verwendet. Hier werden die benutzerdefinierten Listenvorlagen für eine bestimmte Website zurückgegeben und eine neue Liste erstellt, die auf einer angegebenen Listenvorlage basiert.

Dim siteCollection As SPSite = SPContext.Current.Site
Dim mySite As SPWeb = SPContext.Current.Web
Dim listTemplates As SPListTemplateCollection = siteCollection.GetCustomListTemplates(mySite)
Dim listTemplate As SPListTemplate = listTemplates("Custom List Template")

mySite.Lists.Add("Custom List", "A list created from a custom list template in the list template catalog", listTemplate)
SPSite siteCollection = SPContext.Current.Site;
SPWeb mySite = SPContext.Current.Web;
SPListTemplateCollection listTemplates = siteCollection.GetCustomListTemplates(mySite);
SPListTemplate listTemplate = listTemplates["Custom List Template"];

mySite.Lists.Add("Custom List", "A list created from a custom list template in the list template catalog", listTemplate);

Sie können eine Liste mehreren Websites in einer Websitesammlung hinzufügen, wie im folgenden Beispiel gezeigt. Hier wird auf der Grundlage des Titels und der Beschreibung, die aus zwei Textfeldern an den Code übergeben werden, eine allgemeine Liste auf jeder Website erstellt. Mit der AllWebs-Eigenschaft der SPSite-Klasse wird die Auflistung aller Websites zurückgegeben, die auf der Website vorhanden sind.

Im Beispiel wird das Vorhandensein von zwei Textfeldern auf der ASPX-Seite vorausgesetzt, die ein Formular enthält.

Dim listTitle As String = TextBox1.Text.ToString()
Dim listDescription As String = TextBox2.Text.ToString()
Dim mySite As SPSite = SPContext.Current.Site
Dim allWebs As SPWebCollection = mySite.AllWebs

Dim web As SPWeb
For Each web In  allWebs    
    Dim allLists As SPListCollection = web.Lists    
    allLists.Add(listTitle, listDescription, SPListTemplateType.GenericList)
Next web
string listTitle = TextBox1.Text.ToString();
string listDescription = TextBox2.Text.ToString();
SPSite mySite = SPContext.Current.Site;
SPWebCollection allWebs = mySite.AllWebs;

foreach (SPWeb web in allWebs){    
    SPListCollection allLists = web.Lists;
    allLists.Add(listTitle,listDescription, SPListTemplateType.GenericList);
}

Löschen einer Liste

Zum Löschen einer Liste müssen Sie die GUID der Liste als Parameter für die Delete-Methode angeben. Verwenden Sie zur Suche nach der GUID die ID-Eigenschaft der SPList-Klasse.

Dim mySite As SPWeb = SPContext.Current.Web
Dim lists As SPListCollection = mySite.Lists

Dim list As SPList = lists(TextBox1.Text)
Dim listGuid As System.Guid = list.ID

lists.Delete(listGuid) 
SPWeb mySite = SPContext.Current.Web;
SPListCollection lists = mySite.Lists;

SPList list = lists[TextBox1.Text];
System.Guid listGuid = list.ID;

lists.Delete(listGuid);

Im vorherigen Beispiel wird vorausgesetzt, dass ein Textfeld vorhanden ist, in dem der Benutzer den Namen der Liste angibt.

Zum Löschen einer Liste von mehreren Websites werden im folgenden Beispiel geschachtelte Schleifen zum Drilldown zu einer Liste verwendet, deren Titel mit dem in einem Textfeld angegebenen Titel übereinstimmt. Im Beispiel wird das Vorhandensein eines Textfelds auf der ASPX-Seite vorausgesetzt, die ein Formular enthält.

Dim mySite As SPSite = SPContext.Current.Site
Dim allWebs As SPWebCollection = mySite.AllWebs
Dim web As SPWeb

For Each web In  allWebs    
    Dim allLists As SPListCollection = web.Lists    
    Dim i As Integer    

    For i = 0 To allLists.Count - 1        
        Dim list As SPList = allLists(i)        
 
        If list.Title = TextBox1.Text Then            
            Dim listGuid As Guid = list.ID          
            allLists.Delete(listGuid)        
        End If    
    Next i
Next web
SPSite mySite = SPContext.Current.Site;
SPWebCollection allWebs = mySite.AllWebs;

foreach (SPWeb web in allWebs){    
    SPListCollection allLists = web.Lists; 
   
    for (int i=0; i<allLists.Count; i++)    
    {        
        SPList list = allLists[i];        

        if (list.Title == TextBox1.Text)        
        {            
            Guid listGuid = list.ID;            
            allLists.Delete(listGuid);        
        }    
}}

Im Beispiel wird die Title-Eigenschaft der SPList-Klasse zum Identifizieren einer Liste in der Auflistung von Listen für jede Website verwendet, die mit dem angegebenen Titel übereinstimmt. Die ID-Eigenschaft gibt die GUID (Globally Unique Identifier) der Liste zurück, die als Parameter für die Delete-Methode übergeben wird.

In den vorherigen Beispielen ist eine using-Direktive (Imports in Microsoft Visual Basic) für den Microsoft.SharePoint-Namespace erforderlich.

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