none
SP-2007] Event Handler, Comment clibler le répertoire d'execution ? RRS feed

  • Question

  • Bonjour à tous,

    En créant mon Event Handler je me suis confronté à une problématique.
    Je dois cibler l'exécution de mon Event Handler par rapport à certains répertoires de ma liste..

    Pour expliquer un peu, lorsqu'un utilisateur dépose un fichier dans ma liste sur un répertoire bien spécifique mon Event Handler doit pouvoir se déclencher par contre si le fichier est déposé dans un autre Rep rien doit pouvoir se passer.

    Et c’est la tout le problème vu que l’ Event Handler s’exécute toujours sur l’ensemble de la liste..

    Donc ma question serait : Comment je peux récupérer le nom du répertoire dans lequel je dépose le fichier ?

    ci-dessou mon code du Event Handler ( qui fonction très bien mais sur l'ensemble de la list )

    public override void ItemAdded(SPItemEventProperties properties)
    
            {
    
     
    
                SPSite oSite = new SPSite("http://srvmoss");
    
                SPWeb oWeb = oSite.AllWebs["SITE"];
    
                SPList MyList = oWeb.Lists["DOCS"];
    
     
    
                    //envoi mail
    
                    bool fAppendHTML = true;
    
                    bool fEncodeHTML = false;
    
                    string To = "user@mail.fr";
    
                    string Subject = "'objet";
    
                    string htmlBody = "body";
    
     
    
                    SPUtility.SendEmail(oWeb, fAppendHTML, fEncodeHTML, To, Subject, htmlBody);
    
               }
    
    

    Merci d'avance!

    jeudi 25 juin 2009 10:34

Toutes les réponses

  • Bonjour,

    vous pouvez récupérer le nom du répertoire grâce à l'objet properties :

    String folderName = properties.ListItem.Folder.Name;

    http://blogs.developpeur.org/anouvel
    • Proposé comme réponse Arnault Nouvel jeudi 25 juin 2009 11:14
    • Marqué comme réponse Spe$lurp jeudi 9 juillet 2009 15:48
    • Non marqué comme réponse Spe$lurp mercredi 15 juillet 2009 08:31
    jeudi 25 juin 2009 11:14
  • Ha merci! j'ai test et j'ai bien le nom du dossier courant! j'avais pas encore explorer ce code..

    Merci pour l'aide!
    jeudi 9 juillet 2009 15:47
  • En fait maintenant dès que je mets ce code :

    String folderName = properties.ListItem.Folder.Name;

    Il me fait un méssage d'erreur :

    Erreur WSS3 Généralités  Evt : 6875

    Erreur lors du chargement et de l'exécution du récepteur d'événements EventHandlerGed.EventHandlerGed dans EventHandlerGed, Version=1.0.0.0, Culture=neutral, PublicKeyToken=ac68714cc0d56d35. Informations complémentaires ci-dessous.

    : La référence d'objet n'est pas définie à une instance d'un objet.


    Mon mail est quand même généré ca va mais c'est un gros problème vu que je ne peux pas appliquer ce code!

    Comment faire?? 
    mercredi 15 juillet 2009 08:37
  • Bonjour,

    Vous pourriez débugger votre code (après avoir déployé une version debug de votre assembly sur votre machine de dev, attachez vous à w3wp.exe) pour voir quelle propriété pose problème ?
    Cela nous permettrait d'avancer puisque l'on saurait si c'est ListItem qui est nul ou Folder.

    Pourriez-vous aussi regarder dans le log SharePoint ?
    http://blogs.developpeur.org/anouvel
    Merci de valider les réponses à vos questions et de marquer comme telles les réponses utiles
    mercredi 15 juillet 2009 09:59
  • Bonjour,

    J'utilise une version express de visual studio.. donc pas d'attach to process..

    Dans mon fichier de Log sharepoint c'est comme dans l'observateur d'evenements : La référence d'objet n'est pas définie à une instance d'un objet.

    Y'a une solution pour debuger mon appli.. a par acheter une visual Studio ?
    mercredi 15 juillet 2009 14:05
  • En effet, vous pouvez mettre cette ligne de code qui devrait avoir le même effet :

    System.Diagnostics.Debugger.Launch();
    En esperant que Visual Studio Express voudra bien s'attacher..
    http://blogs.developpeur.org/anouvel
    Merci de valider les réponses à vos questions et de marquer comme telles les réponses utiles
    • Proposé comme réponse Arnault Nouvel mercredi 15 juillet 2009 14:19
    mercredi 15 juillet 2009 14:18
  • J'ai un message d'erreur dans l'observateur, en resumé : le debogueur n'a pas pu demarré car aucun utilisateur n'est connecté. ??


    mercredi 15 juillet 2009 15:11
  • j'ai testé avec properties.ListItem.File.Name j'ai ajouté des fichiers et la tout fonctionne très bien!
    plus de message d'erreur et je recois bien le mail avec le nom du fichier que je viens de mettre.

    Donc j'ai remodifié mon code pour les Folder et là les erreurs reviennent.
    pourtant je copie que des nouveaux rep sans fichiers.
    Je ne comprend pas pourquoi il n'aime pas les rep !

    Plus qu'a acheter un visual studio! ca va faire cher le debugage..

    mercredi 15 juillet 2009 15:49
  • Y'a t-il un solution pour récuppérer le chemin complet du dossier sans passer par un properties.ListItem.Folder.Name; ??
    mercredi 15 juillet 2009 15:58
  • pour récuppérer le chemin complet du dossier je suis passé par l'URL du fichier et en splitant j'arrive à avoir ce que je veux.

    Donc il me reste juste l'erreur par rapport au dossier sinon mon code fonctionne nikel.

    Merci pour l'aide apportée!
    vendredi 17 juillet 2009 10:49