SharePoint2007AfterPropertiesで苦労しています。数人を追加できる人入力フィールドがあります。
ItemUpdatingイベントで、どのユーザーが追加、削除、または同じままであるかを判別する必要があります。
残念ながら、これは非常に困難になります。これは、手付かずのユーザーのIDがAfterPropertiesで-1になり、SPFieldUserValueCollectionを使用してユーザーを見つけることができないためです。
例。properties.ListItem ["AssignedTo"]。ToString()は次のことを示しています。
1;#domain \ user1;#2;#domain \ user2
properties.AfterProperties ["AssignedTo"]。ToString()は次のことを示しています。
-1;#domain \ user1;#-1; #domain \ user2;#3;#domain \user3<-ユーザーを追加しました
削除および追加されたユーザーを判別するために、次のコードを使用することを計画しました。
foreach (SPFieldUserValue oldUser in oldUserCollection)
{
if (newUserCollection.Find(x => x.LookupId == oldUser.LookupId) == null)
{
RemoveRole(aListItem, oldUser.User, roleDefCollection[workerRoleName]);
}
}
foreach (SPFieldUserValue newUser in newUserCollection)
{
if(oldUserCollection.Find(x => x.User.LoginName == newUser.LookupValue) == null)
{
AddRole(aListItem, newUser.User, roleDefCollection[workerRoleName]);
}
}
AfterPropertiesが正しいlookupidを表示するようにアーカイブするにはどうすればよいですか?