Rzadko się zdarza bym publikował dwie notatki podczas jednego dnia, ale warto o tym wspomnieć. Jeden z uczestników spotkania, zadał pytanie prelegentowi (Arutr Żarski):

W jaki sposób podczas wykonywania kodu w delegacie SPSecurity.RunWithElevatedPriviliges ustawić użytkownika?

I jeżeli się nie mylę to padło jeszcze pytanie:

Jak zaktualizować dane tak by nie modyfikować informacji o ostatniej osobie która z edytowała element?

Odpowiedź na pierwsze pytanie znajduje się w kodzie poniżej:

using (SPSite site = new SPSite("http://PearlJam"))
{
    using(SPWeb web = site.OpenWeb())
    {
        SPList list = web.Lists["TestList"];
        SPListItem item = list.Items[0];
        // Internal Name od Created By
        item["Author"] = web.CurrentUser.ID;
        // Internal Name od Modified By
        item["Editor"] = web.CurrentUser.ID;
        item["Description"] = string.Format("Aktualicacja: {0}", DateTime.Now.ToLongDateString());
        item.Update();   
    }
}

Zaś odpowiedź na drugie znajduje się w dokumentacji SPListItem.SystemUpdate, a wykorzystujemy to tak:

using (SPSite site = new SPSite("http://PearlJam"))
{
    using(SPWeb web = site.OpenWeb())
    {
        SPList list = web.Lists["TestList"];
        SPListItem item = list.Items[0];
        item["Title"] = "Nowy Tytul";
        item["Description"] = string.Format("Aktualizacja: {0}, nie odnotowana", DateTime.Now.ToLongDateString());
        // Nie aktualizujemy Modified By i Modified
        item.SystemUpdate();
    }
}

To co warto zaznaczyć przy metodzie SystemUpdate, to, to, że nie tylko pole Modified By jest nie aktualizowane, ale także pole Modified (pokazujące datę modyfikacji).

Mam nadzieję, że to odpowiada na te pytania, jeżeli to dajcie znać w komentarzach a z chęcią pomogę.

PS.: Materiały z sesji są już dostępne tutaj.

1 KOMENTARZ

Comments are closed.