Je suis aux prises avec les propriétés d'après-projet SharePoint 2007. J'ai un champ de saisie de personnes, où plusieurs personnes peuvent être ajoutées.SharePoint 2007: Le champ de saisie AfterProperties de la personne affiche toujours -1 en tant que lookupid
Lors de l'événement ItemUpdating, j'ai maintenant besoin de déterminer quels utilisateurs ont été ajoutés, supprimés ou restés les mêmes.
Malheureusement, cela devient difficile, car l'ID des utilisateurs intacts passe à -1 dans les propriétés d'après, de sorte que je ne peux pas utiliser SPFieldUserValueCollection pour trouver l'utilisateur.
Un exemple. . Properties.ListItem [ "AssignedTo"] de ToString() indique:
1; #domain \ user1; # 2; #domain \ user2
properties.AfterProperties [ "AssignedTo"] ToString() montre.:
-1; #domain \ user1; # - 1; #domain \ user2, # 3, #domain \ util_3 < -Ajout un utilisateur
je comptais utiliser le code ci-dessous, pour déterminer les utilisateurs supprimés et ajoutés :
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]);
}
}
Comment puis-je archiver, que les AfterProperties montrent la bonne lookupid?