个人或组字段(多用户字段)上的项目更新列表项目事件接收器

Item Updating list item event receiver on Person or Group field (Multi-User field)

我的需求是从sharepoint列表项(person or group 字段)中获取所有用户,并为不同的文档库分配[读取]权限。由于它有多个用户,在列表项更新时,是否可以比较新added/removed用户的person或Group字段的前后属性和add/remove权限?

目前在项目更新时,我正在删除所有现有的用户权限并在项目更新时将它们添加回来。我什至不知道个人或组字段是否已被修改。

您可以测试您的列是否在 ItemUpdating 事件期间发生了变化。在 SPItemEventProperties 中,您可以找到名为 AfterProperties 的 属性。 在 ItemUpdating 上工作时,您可以使用 BeforeProperties 或只使用 properties.ListItem 它们都存储原始值。

因此,如果您想测试您的列中是否有任何更改,您可以使用以下代码:

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

但是由于您拥有多值用户字段,因此这不会起作用,因为这些集合 return 通用对象,您必须将其转换为可比较的对象(例如通过使用 ToString()方法)。

尝试以下操作:

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

如果有帮助请告诉我。