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):
I jeżeli się nie mylę to padło jeszcze pytanie:W jaki sposób podczas wykonywania kodu w delegacie SPSecurity.RunWithElevatedPriviliges ustawić użytkownika?
Odpowiedź na pierwsze pytanie znajduje się w kodzie poniżej:Jak zaktualizować dane tak by nie modyfikować informacji o ostatniej osobie która z edytowała element?
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.
Dzięki Kuba – działa :)
Comments are closed.