2008-11-14 7 views
2

Ce que je me demande comment faire est quand quelqu'un édite un élément de la liste et il traverse mon code d'événement qui est déclenché quand un changement est fait et sauver est frappé, je ne veux personne être capable d'éditer cet élément de liste lui-même pendant qu'il traite encore cette requête. Donc je me demandais si pendant que dans cet événement je peux désactiver l'élément individuel d'être édité par quelqu'un d'autre jusqu'à ce qu'il soit fait ce qu'il fait.Dans sharepoint désactiver un élément de liste individuelle d'être mis à jour

Répondre

2

Je ne sais pas si je comprends exactement ce que vous voulez.

Essayez d'ajouter un champ, caché si vous le souhaitez, à la liste ou au type de contenu à utiliser comme indicateur. Lorsque vous entrez votre code d'événement, assurez-vous de vérifier le drapeau en premier et s'il n'est pas défini, réglez-le et faites votre travail. Une fois que vous avez terminé, mettez le drapeau hors service.

Voici un code à illustrer. Notez que j'ai utilisé une colonne nommée "mise à jour". Vous pouvez également utiliser les propriétés de SPListItem si vous ne souhaitez pas ajouter de colonne.

Oh, et n'oubliez pas d'appeler DisableEventFiring avant SPListItem.Update, puis EnableEventFiring() par la suite. Pour obtenir ceci et vous aurez une boucle infinie très méchant sur vos mains.

.B

public override void ItemAdding(SPItemEventProperties properties) 
    { 
     if (properties.ListItem["updating"].ToString() == "updating") 
     { 
      properties.Cancel = true; 
      properties.ErrorMessage = "Item is currently updating, please try again later"; 
     } 
     else 
     { 
      properties.ListItem["updating"] = "updating"; 
      this.DisableEventFiring(); 
      properties.ListItem.Update(); 
      this.EnableEventFiring(); 

      // do your stuff 

      properties.ListItem["updating"] = ""; 
      this.DisableEventFiring(); 
      properties.ListItem.Update(); 
      this.EnableEventFiring(); 
     } 
    } 
1

Je ne doute pas que la solution Bjørns fonctionnera, mais vous devez être très prudent lors de sa mise en œuvre. Pls. souvenez-vous de votre méthode de mise à jour devrait inclure un "enfin" qui réinitialise le drapeau, peu importe quelle exception est levée, sinon votre liste sera verrouillée pour toujours :-(

Questions connexes