none
Est ce possible de changer la valeur d'un hidden field via un event handler ? RRS feed

  • Question

  •  

    Bonjour à tous,

    Toujours dans ma découvertes des joies de sharepoint ...

    J'ai créé un EventHandler (sur itemadding d'un calendar) et pour ce calendrier j'ai créé un "Content Type" perso qui contient un champs avec la property hidden.

    J'aimerais savoir s'il est possible dans mon event handler de changer la valeur de ce champs...

    J'ai essayé properties.AfterProperties[My_Hidden_Field_Internal_Name] = MyValue;

    mais properties.AfterProperties[My_Hidden_Field_Internal_Name] est null ! donc évidemment le = MyValue; ... lol

    Un petit coups de pouce ?

     

    Merci d'avance !

     

    • Déplacé Hengzhe Li mardi 21 février 2012 06:48 merge forum (Origine :Développement Sharepoint 2010)
    mercredi 10 août 2011 08:55

Réponses

Toutes les réponses

  • Bonjour,

    Avez vous essayez la même chose mais sur le ItemAdded et en modifiant directement le ListItem ?

    jeudi 11 août 2011 14:55
  • Bonjour,

     

    Non je n'ai pas encore essayé sur le itemadded. Je teste ça mardi aussi et je donnes des news ;-)

     

    "... en modifiant directement le listItem..." : c'est à dire ? En fait j'ai testé en "hidden" option que j'ai changée avec sharepoint designer.

    La, pas moyen d'y accéder avec mon event handler. Comme s'il etait caché pour le event handler aussi.

    J'ai donc rechangé l'option "hidden" en "optional" (toujours par sharepoint designer) et la, l'accès par l'event se fait sans aucun problème

    (sans changer une ligne de code dans mon event handler ...)

     

    jeudi 11 août 2011 19:51
  • Salut,

    Dans le ItemAdded tu peux acceder à l'item (SPListItem) car il existe déjà. Donc tu ne passes plus par le properties.AfterProperties mais par properties.Item ou properties.ListItem (je me rapelle plus de tête :) ) c'est plus par curiosité que je te demande ça ...

    Sinon quel est ton but avec le hidden ? il existe d'autre façon de cacher un champs dans les formulaires SharePoint (ShowInNewForm, ShowInEditForm, etc...) peut être que ce serait suffisant pour ton besoin, et te permettrai de modifier la valeur ds le ItemAdding comme tu le souhaite....?

    ?

    vendredi 12 août 2011 07:09
  • Re,

    Ok, je testerai donc le ItemAdded

    En fait je suis nouveau sur sharepoint (et je dois apprendre par moi-même ...) donc je ne connais pas encore bien toutes les possibilités.

    Pour te résumer la situation : j'ai un calendrier et quand j'ajoute un event, il déclenche mon event handler (jusque la rien de bien compliqué.
    Dans certains cas, je veux que mon event soit splitté en plusieurs (ex : event poser sur 2semaines, splitté en 2 events week end non inclus).

    Mon problème est que je ne souhaite pas "déclencher" l'event handler pour ces split d'event. J'ai donc ajouté un champs booléen caché  "splitted" qui me sert de flag : "si je suis un event splitté, je ne passe pas dans le code adding de l'event handler. Effectivement les propriétés (que je ne connaissais pas) ShowInNewForm, ShowInEditForm, etc... pourraient certainement répondre à mes besoins, je vais regarder à ça mardi aussi ;-).

    En tous cas un grand merci pour l'assistance !! ;-)

    J'en ai bien besoin (je suis le seul de la boite sur sharepoint et j'ai pour seuls soutiens psychologiques 2 livres ("Sharepoint pour les nuls" et un autre dont j'ai oublié le nom exacte) sur le coins de mon bureau ... C'est léger face à THE sharepoint ...

    1000 Mercis

    vendredi 12 août 2011 08:25
  • Bonjour,

    Je suis d'accord avec Lionel.

    Pour compléter, un article très bien fait devrait vous mettre le pied à l'étrier, il évoque la mise à jour des propriétés d'un éléments sur eventHandler, La stratégie est similaire sous SharePoint 2010.

    http://www.areaprog.com/SP2010/cours-511-event-receiver-d'element-developpement-d'event-handler-au-niveau-des-elements


    Nicolas Cambot - Blog Nelite
    mardi 16 août 2011 10:59
  •  

    Voila, j'ai commencé mes petits tests sur ce sujet.

    Manifestement ... ça doit être une journée de m**** ;-/ :

     

    1) Mon event "itemAdded" ne veut pas se déclencher (passe jamais dans mon code)

     

    2) Quand je pose un breakpoint et que je lance le debug j'ai droit à un superbe (et visiblement bien connu)

    "the breakpoint will not currently be hit. No symbols have been loaded for this document" ...

    J'ai un peu chercher à résoudre mais ça a fini par me saouler...

    (code source 1 - saar 0)

     

    3) J'ai testé les propriétés showxxx pour mes champs. Effectivement ça marche ... mais ...

    Une fois caché je n'y ai plus accès par le code (je pensais pouvoir les masquer pour les page aspx mais y avoir accès dans mon eveny handler.  Alors j'ai tenté de mettre les valeur à true (avoir les champs visibles) dés que je rentre dans itemAdding et les remettre à false à la fin juste avant la sortie du code (pour les recacher) mais ça ne marche pas :-(
    Je ne m'explique pas trop pourquoi... Le symptome : quand je fais mon 2e "add item" (le premier se passe bien puisque mes showxxx sont à true) on dirait qu'il ne prend pas en compte mon showxxx = true. Comme si je n'avais pas fait de field.update() en fait. Donc ca donne 1re add ok, 2e add error, 3e add error, 4e add error ...

     

    Voila les news, je retourne noyer mon désespoir dans une Xièmre tasse de café . . .

     

     

     

    lundi 22 août 2011 13:16
  • Bonjour,

    1) et 2) Comment l'eventhandler est-il connecté à la liste ? par xml ds la déclaration des elements de la feature, ou par code ? dans le premier cas, il est normal que le itemadded ne soit jamais apellé car la déclaration xml n'est pas "relue" systématiquement. Il faut récréer la liste, c'est à ce moment là que SharePoint la connecte au handler (http://www.paslatek.net/mon-eventhandler-ne-legraveve-quune-partie-de-mes-eacuteveacutenements-la-liste-est-creacutee-trop-tocirct-20090309-15.aspx )

    Au final je prefere connecter ma liste par code (SPList.EventReceivers) dans un receiver de feature, à l'activation de ma feature, je trouve ça plus simple quand mon receiver est dédié à une liste en particulier.

    3) dans mon idée les showinXXX doivent etre positionnés une fois pour toute pour correspondre à ton besoin. Je trouve ça étonnant que tu n'y ai pas accès dans le itemadding... apparement même comportement que pour la version 'hidden'. Là encore je serais curieux de voir si tout ça ne fonctionne pas mieux sur le itemadded

    Tiens moi au courant !

    mardi 23 août 2011 07:16
  • Bonjour,

    Connecté par xml oui ! En fait je ne savais meme pas trop (j'avais juste cliqué sur les boutons dans vs 2010 et ... magie !!! Mais en suivant ton lien j'ai découvert les décla dans element.xml ! Encore un merci! ;-)
    Et la ... pas de itemadded !!! Je vais donc gentillement me rajouter et j'imagine que ca va fonctionner. Je redonne des news par la suite à ce sujet.

    Je pense que je vais un peu investiguer du coté des "receiver de feature" ... Je connais pas non plus mais ca me semble mieux qu'un test chaque fois que itemadding est lancé pour voir si je suis bien sur la bonne liste ...

    Vais donc normalement pouvoir tester le itemadded. Des news d'ici peu !

    Tiens, dans le meme esprit, autre question subsidiaire : dans les exemples d'event handler je vois souvent base.lafonctioninitiale();
    J'avais commenté par curriosité et ca ne changeait rien à l'execution... C'est indispensable de le mettre ??? (j'imagine que c'est encore une question c** mais si je peux aller dormir un peu moins idiot ce soir ...)

    Encore un grand MERCI Ô généreux bienfaiteur !

    mardi 23 août 2011 07:40
  • Effectivement je sais accéder à mes champs cachés à pertir de ItemAdded.
    Le problème à présent est que j'utilise ces champs dans le cadre d'une validation dans ItemAdding... Je pense donc me diriger vers une solution javascript faute de mieux :-/.

     

    mardi 23 août 2011 12:55