none
pb de liaison liste et event handler RRS feed

  • Question

  • Bonjour à tous

    je suis actuellement en autoFormation sur le dev Sharepoint 2010 avec l'appui de l'ouvrage édité par Stéphane Eyskens et Ludovic Lefort. j'en arrive à la partie traitant des evenements et je bloque. Pourriez vous m'indiquer ce que je fais mal (ou pas ) !!!! ??? en deux mots, l'exemple est tout simple , il faut juste creer un evenement sur l'ajout d'un item dans une liste et passer le contenu en Majuscule. volci ce que j'ai fait :

    1 / AVEC VISUAL STUDIO 2010, je cree un projet "bibliotheque de classe" - avec une classe toute simple : code :

    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Text;
    using Microsoft.SharePoint;
    
    namespace SHP2010_Event_TitreEnMajuscule
    {
      public class TitreMaj : SPItemEventReceiver
      {
        public override void ItemAdding(SPItemEventProperties properties)
        {
          base.ItemAdding(properties);
          if (properties.AfterProperties["Title"] != null)
          {
            properties.AfterProperties["Title"] = properties.AfterProperties["Title"].ToString().ToUpper();
          }
        }
     
                   
      }
    }
    
    

    je compile cette DLL et je l'installe dans le GAC (glisser/déplacer depuis le repertoire projet vers le repertoire Assembly -- est ce suffisant pour installer ???


    ensuite, je cree un second projet, de type sharepoint cette fois , pour y creer une feature. J'y créé une classe comme ceci :

    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Text;
    using Microsoft.SharePoint;
    
    namespace SHP2010_EventFeature
    {
      class Class1 : SPFeatureReceiver
      {
        public override void FeatureActivated (SPFeatureReceiverProperties properties) 
         {
         SPSite site = new SPSite("http://monsite/");
         SPWeb web = site.OpenWeb();
         SPList liste = web.Lists["MaListedeCOmmentairesTest"];
         SPEventReceiverDefinition objDef = liste.EventReceivers.Add();
         objDef.Assembly = "SHP2010_Event_TitreEnMajuscule, Version=1.0.0.0, Culture=neutral, PublicKeyToken=63b082b496928221";
           objDef.Class="SHP2010_Event_TitreEnMajuscule.TitreMaj";
           objDef.Name="TitreMaj";
           objDef.Type= SPEventReceiverType.ItemAdding;
           objDef.Update();
          }
      }
    }
    

    je compile et deploie cette feature avec visual studio. La feature figure bien dans la liste des feature et est bien activée. Mais quand je vais creer un item sur ma liste, le code ne s'applique pas...

    Je tourne en rond, je n'arrive pas à voir ce que j'oublie, soit dans le code, soit dans la procédure de déploiement. Avez vous une idée svp ? J'aimerais bien avoir un exemple complet avec une explication simple. Tout ce que j'ai pu lire pour m'aider est tjrs confus (à mon sens). Je n'arrive pas à avoir une vision claire du code et surtout de son implémentation .. quoi mettre et OU ???  Merci d'avance à tous

     


    AL-Geoxia
    • Déplacé Roxana PANAITMicrosoft employee jeudi 7 juillet 2011 11:06 (Origine :Sharepoint 2010, 2007 et versions antérieures pour les professionnels IT)
    • Déplacé Hengzhe Li mardi 21 février 2012 06:51 merge forum (Origine :Développement Sharepoint 2010)
    mardi 14 juin 2011 14:34

Réponses

  • à première vue le code à l'air correcte.

     

    tu dois faire attention que après avoir copier ta dll dans le gac tu dois effecturer un recycle de la pool pour que ton handler soit pris en compte.

    pour ma part, je préfère binder mon handler sur ma liste en déclaratif (xml) et non par code.

    http://msdn.microsoft.com/en-us/library/ms430602.aspx

     

    note que Receivers possède une proprité ListUrl qui te permerttrait de spéficier la liste surlaquelle tu vas binder ton eventhandler

     

     


    My SharePoint Blog : http://gilleslauwers.wordpress.com
    • Marqué comme réponse algeox vendredi 29 juillet 2011 06:07
    jeudi 28 juillet 2011 15:41

Toutes les réponses

  • à première vue le code à l'air correcte.

     

    tu dois faire attention que après avoir copier ta dll dans le gac tu dois effecturer un recycle de la pool pour que ton handler soit pris en compte.

    pour ma part, je préfère binder mon handler sur ma liste en déclaratif (xml) et non par code.

    http://msdn.microsoft.com/en-us/library/ms430602.aspx

     

    note que Receivers possède une proprité ListUrl qui te permerttrait de spéficier la liste surlaquelle tu vas binder ton eventhandler

     

     


    My SharePoint Blog : http://gilleslauwers.wordpress.com
    • Marqué comme réponse algeox vendredi 29 juillet 2011 06:07
    jeudi 28 juillet 2011 15:41
  • BONJOUR

    Je te remercie bcp pour ces précisions.

    Bonne journée

    AL


    AL-Geoxia
    vendredi 29 juillet 2011 06:07