Communardo Software GmbH, Kleiststraße 10 a, D-01129 Dresden
0800 1 255 255

DefaultView einer SPList über das Objektmodell anpassen

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 hinterlassen


Pin It on Pinterest