【问题标题】:Item Updating list item event receiver on Person or Group field (Multi-User field)个人或组字段(多用户字段)上的项目更新列表项事件接收器
【发布时间】:2016-08-13 03:12:06
【问题描述】:
我的要求是从共享点列表项(个人或组字段)中获取所有用户,并将[读取]权限分配给不同的文档库。由于它有多个用户,在列表项更新时,是否可以比较人员或组字段的前后属性并添加/删除新添加/删除的用户的权限?
目前在项目更新中,我正在删除所有现有用户权限并将它们添加回项目更新。我什至不知道 person 或 group 字段是否已被修改。
【问题讨论】:
标签:
sharepoint
sharepoint-2010
sharepoint-2013
event-receiver
eventreceiver
【解决方案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())
{
}
如果有帮助,请告诉我。