Main /

Sharepoint Listen Anlegen

Sharepoint Listen Anlegen

/ HomePage / Computer / Software / SharePoint / SharepointListenAnlegen

Sharepoint-Listen programmatisch anlegen (SharePoint 2010)

Aufgabenstellung

Dieses Beispielzeigt wie man SharePoint-Listen mit Hilfe des Objektmodells anlegt und wieder löscht. Im Bespiel werden zwei Listen erzeugt, bei der in der zweiten ein Lookup-Feld auf die erste definiert wird. Zusätzlich erhält das Lookup-Feld eine Löschbeschränkung (neues Feature in 2010). Das Lookup-Feld wird dem Default-View hinzugefügt und die Liste erscheint in der linken Navigation (Quick-Launch)

Anlegen von Listen

private void CreateLists()
{
        string nameRegionsList = "Regionen";
        string nameCountriesList = "Laender";

        Guid regionsGuid = Guid.Empty;
        Guid countriesGuid = Guid.Empty;

        bool error = false;

        using (SPSite siteCollection = new SPSite("http://myServer/sites/mySite"))
        {
                siteCollection.AllowUnsafeUpdates = true;

                // Hier kann man das Subweb angeben, falls die Listen nicht
                // im Site-Collection Root erzeugt werden sollen
                using (SPWeb myWeb = siteCollection.OpenWeb("mySubWeb"))
                {
                        SPListCollection lists = myWeb.Lists;

                        // Regionen-Liste anlegen falls sie noch nicht existiert
                        // Die Liste ist eine Default-Custom List nur mit einem Title-Feld
                        try
                        {
                                SPList list = myWeb.Lists[nameRegionsList];
                        }
                        catch (ArgumentException indEx)
                        {
                                // Liste existiert nicht, anlegen
                                regionsGuid = lists.Add(nameRegionsList, "Liste der Regionen", SPListTemplateType.GenericList);
                                SPList milist = lists[regionsGuid];

                                // Liste der linken Navigation hinzufügen
                                milist.OnQuickLaunch = true;
                                milist.Update();

                                // Da keine zusätzlichen Spalten angelegt werden,
                                // entfällt die Erweiterung des Default-Views
                        }
                        catch (Exception ex)
                        {
                                // Ein unvorhergesehener Fehler, Liste wurde nicht angelegt
                                error = true;
                        }

                        if (!error)
                        {
                                // Länderliste anlegen falls noch nciht vorhanden
                                try
                                {
                                        SPList list = myWeb.Lists[nameSubprojectList];
                                }
                                catch (ArgumentException indEx)
                                {
                                        // Liste existiert nicht, anlegen
                                        countriesGuid = lists.Add(nameCountriesList, "Liste der Länder", SPListTemplateType.GenericList);
                                        SPList dependentList = lists[countriesGuid];
                                        dependentList.OnQuickLaunch = true;
                                        dependentList.Update();

                                        // Lookup-Feld auf Regionen hinzufügen
                                        SPList sourceList = lists[regionsGuid];
                                        string strPrimaryCol = dependentList.Fields.AddLookup("Region", regionsGuid, true);
                                        SPFieldLookup primaryCol = (SPFieldLookup)dependentList.Fields.GetFieldByInternalName(strPrimaryCol);

                                        // Lookup auf Title-Feld der Regionen-Liste
                                        primaryCol.LookupField = sourceList.Fields["Title"].InternalName;
                                        primaryCol.Indexed = true;

                                        // Löschbeschränkung
                                        primaryCol.RelationshipDeleteBehavior = SPRelationshipDeleteBehavior.Restrict;
                                        primaryCol.Update();

                                        // Lookup-Feld zum Default-View hinzufügen
                                        SPView defaultView = dependentList.Views[dependentList.DefaultView.ID];
                                        defaultView.ViewFields.Add(strPrimaryCol); // internal field name
                                        defaultView.Update();
                                }
                                catch (Exception ex)
                                {
                                        // Ein unvorhergesehener Fehler, Liste wurde nicht angelegt
                                }
                        }
                }
        }
}

Listen löschen

Zum Löschen von verknüpften Listen muss zunächst die Löschbeschränkung aufgehoben werden:

private void DeleteLists()
{
        string nameRegionsList = "Regionen";
        string nameCountriesList = "Laender";

        using (SPSite siteCollection = new SPSite("http://myServer/sites/mySite"))
        {
                siteCollection.AllowUnsafeUpdates = true;
                using (SPWeb myWeb = siteCollection.OpenWeb("mySubWeb"))
                {
                        SPList clist = myWeb.Lists[nameCountriesList];
                        SPList rlist = myWeb.Lists[nameRegionsList];

                        // Löschbeschränkung entfernen
                        SPFieldLookup primaryCol = (SPFieldLookup)clist.Fields.GetFieldByInternalName("Region");
                        primaryCol.RelationshipDeleteBehavior = SPRelationshipDeleteBehavior.None;
                        primaryCol.Indexed = false;
                        primaryCol.Update();

                        // Listen entfernen
                        myWeb.Lists.Delete(clist.ID);
                        myWeb.Lists.Delete(rlist.ID);
                }
        }
}
Frische Änderungen | Menü editieren
zuletzt geändert am 10.03.2011 13:14 Uhr von Elsni
Edit Page | Page History