none
le dossier d'un element de liste RRS feed

  • Question

  • bonjour,

    je souhaite connaitre le dossier qui contient un élément (connu par son id) dans un ev ent handler, comment faire?

    en fait je souhaite interdire l'ajout de fichier dans la racine d'une bibliothéque de document:  c a d ajoputer un fichier ds un dossier . est ce que vous avez des idees?

    Merci par avance

    lundi 26 avril 2010 13:38

Réponses

  • Il me semble que la propriété: properties.BeforeUrl permet d'obtenir l'url qu'aura l'élément une fois qu'il sera créé.

    Vous pouvez la travailler pour obtenir le dossier parent.

    Et dans le cas qui ne vous plait pas, vous pourrez définir:

    properties.Cancel = true;

    et

    properties.ErrorMessage = "Message d'erreur";

    • Marqué comme réponse chakib_19 lundi 26 avril 2010 14:58
    lundi 26 avril 2010 14:55

Toutes les réponses

  • Bonjour,

     

    Effectivement, on ne peut pas obtenir le dossier parent d'un élément sans passer par son attribut SPFile qui dans votre cas est null puisque vous n'êtes pas dans une bibliothèque de documents.

    (item.File est null).

    Par contre on peut l'obtenir de manière détournée à l'aide du Web Parent, ce blog donne un exemple de code:

    http://www.sambeauvois.be/blog/2010/02/get-the-parent-folder-for-a-splistitem/

    Dans le cas où vous vous trouvez dans une bibliothèque de documents, un simple item.File.ParentFolder vous donne ce que vous recherchez

    lundi 26 avril 2010 13:59
  • Merci pour ta réponse

    mais je travail bien avec une bibliothéque de document, donc comment faire?

    Merci

    lundi 26 avril 2010 14:00
  • dsl j ai pas bien lu ton message:) et j ai été trop rapide

    le probleme c que je dois effectuer le control ( si on va ajouter le fichier dans la racine de la doclib ou ds un dossier) avant d'effectuer l'ajout.

    Merci

    lundi 26 avril 2010 14:05
  • Si vous avez bien défini votre event handler, sa classe doit hériter de SPItemEventReceiver.

    Celà vous donne accès à des fonctions comme: public override void ItemAdded(SPItemEventProperties properties)

    Dans cet attribut properties, vous pouvez accéder au SPListItem ayant déclenché l'évènement: properties.ListItem et donc à tout son modèle objet.

    Pour la liste, elle a également un attribut 'RootFolder' dont vous pouvez comparer l'url au ParentFolder obtenu précédemment.

    lundi 26 avril 2010 14:07
  • c tres gentil , l evenement c sur le itemadding, aurais je l acces au parentfolder avant que l'element soit ajouter à la liste?
    lundi 26 avril 2010 14:13
  • Il me semble que la propriété: properties.BeforeUrl permet d'obtenir l'url qu'aura l'élément une fois qu'il sera créé.

    Vous pouvez la travailler pour obtenir le dossier parent.

    Et dans le cas qui ne vous plait pas, vous pourrez définir:

    properties.Cancel = true;

    et

    properties.ErrorMessage = "Message d'erreur";

    • Marqué comme réponse chakib_19 lundi 26 avril 2010 14:58
    lundi 26 avril 2010 14:55
  • Merci  beaucoup
    lundi 26 avril 2010 14:59