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 selt­sa­mes Verhalten. Folgender Codeausschnitt bringt nicht den gewünsch­ten Erfolg – die Ansicht ist hin­ter­her noch genauso wie vor­her:

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 die­ses Verhalten wird klar, wenn man einen kur­zen Blick in die MSDN wirft: Die Methode SPList.DefaultView gibt bei jedem Aufruf eine neue Instanz zurück. Durch die­ses Verhalten wird die Veränderung ver­wor­fen.

Da die Ursache klar ist, ist auch klar, wie man die­ses Verhalten umgeht: Man spei­chert die Referenz auf die DefaultView in einer Variable und aktua­li­siert 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();
        }
    }
}

Related Posts

Pin It on Pinterest