Startseite > Techblog > Microsoft Sharepoint > DefaultView einer SPList über das Objektmodell anpassen
mhy

Aktualisiert man die DefaultView einer SPList über das Objektmodell, so trifft man auf ein etwas seltsames Verhalten. Folgender Codeausschnitt bringt nicht den gewünschten Erfolg – die Ansicht ist hinterher noch genauso wie vorher:

private static void UpdateDefaultView()
{
    using (SPSite site = new SPSite(SITECOLLECTIONURL))
    {
        using (SPWeb web = site.RootWeb)
        {
            SPList list = web.Lists["Employees"];
            list.DefaultView.ViewFields.Add("Address");
            list.DefaultView.Update();
        }
    }
}

Der Grund für dieses Verhalten wird klar, wenn man einen kurzen Blick in die MSDN wirft: Die Methode SPList.DefaultView gibt bei jedem Aufruf eine neue Instanz zurück. Durch dieses Verhalten wird die Veränderung verworfen.

Da die Ursache klar ist, ist auch klar, wie man dieses Verhalten umgeht: Man speichert die Referenz auf die DefaultView in einer Variable und aktualisiert diese:

private static void UpdateDefaultView()
{
    using (SPSite site = new SPSite(SITECOLLECTIONURL))
    {
        using (SPWeb web = site.RootWeb)
        {
            SPList list = web.Lists["Employees"];
            SPView view = list.DefaultView;
            view.ViewFields.Add("Address");
            view.Update();
        }
    }
}

Kommentar Feed Trackback URL

Hinterlassen Sie einen Kommentar

Tag Cloud

Unsere Themen

Kommentare

  • Christian Heindel: Hallo Volti, die Option “Verbindung mit ‘Dokumentbibliothek̵ 7; herstellen”...
  • volti: Hi, ich hab das beschriebene Probleme mit Outlook 2010, dort finde ich die Option Aktionen >...
  • Michael Wittwer: Hallo Guter Beitrag, bin seit kurzem auch mit Balsamiq am arbeiten und die Effizienz ist einfach...
  • Frank: Danke, tut und ist im Vergleich zur Atlassian Lösung abwärtskompatibel bis Confluence 2.10.
  • Ghost@: Danke für die schnelle Antwort Martin! Das ist natürlich ärgerlich, dass der Datentyp nicht unterstützt ist....

Twitter