Приемник события обновления элемента списка в поле «Человек» или «Группа» (многопользовательское поле)

Мое требование - получить всех пользователей из элемента списка sharepoint (поле человека или группы) и назначить разрешения [Чтение] различным библиотекам документов. Поскольку у него несколько пользователей, при обновлении элемента списка Можно ли сравнить свойства до и после поля человека или группы и добавить / удалить разрешения для нового добавленного / удаленного пользователя?

В настоящее время при обновлении элемента я удаляю все существующие разрешения пользователей и добавляю их обратно при обновлении элемента. Я даже не знаю, было ли изменено поле человека или группы.


person user1879845    schedule 12.08.2016    source источник


Ответы (1)


Вы можете проверить, изменился ли ваш столбец во время события ItemUpdating. Внутри SPItemEventProperties вы можете найти недвижимость под названием AfterProperties. При работе с ItemUpdating вы можете использовать BeforeProperties или просто properties.ListItem, оба они сохраняют исходное значение.

Поэтому, если вы хотите проверить, изменилось ли что-нибудь в вашем столбце, вы можете использовать следующий код:

if (properties.ListItem["customColumn"] != properties.AfterProperties["customColumn"])
{
}

Но поскольку у вас есть многозначное пользовательское поле, это не сработает, потому что эти коллекции возвращают общие объекты, которые вам придется преобразовать во что-то сопоставимое (например, с помощью метода ToString()).

Попробуйте следующее:

 if(properties.ListItem["column"]?.ToString() != properties.AfterProperties["column"]?.ToString()) 
 {
 }

Сообщите мне, если это поможет.

person nizzik    schedule 12.08.2016