IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Développement Sharepoint .NET Discussion :

[WSS3] évènement ItemUpdated


Sujet :

Développement Sharepoint .NET

  1. #1
    Membre du Club
    Inscrit en
    Juin 2007
    Messages
    112
    Détails du profil
    Informations forums :
    Inscription : Juin 2007
    Messages : 112
    Points : 65
    Points
    65
    Par défaut [WSS3] évènement ItemUpdated
    Bonjour,

    Je dois vérifier que le nom d'un dossier mis à jour est bien formé, en fonction de règles internes.
    Pour cela, j'ai redéfini l'évènement ItemUpdated de la manière suivante :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
     
    public override void ItemUpdated(SPItemEventProperties properties)
            {
                DisableEventFiring();
                base.ItemUpdated(properties);
     
                SPListItem item;
                string prefixe;
                if (properties.ListTitle == "REFERENTIEL_NOP")
                {
                    item = properties.ListItem;
                    SPContentType contenu = item.ContentType;
                    if (contenu.Name == "Dossier")
                    {
                        string[] result = item.DisplayName.ToUpper().Split('_');
                        prefixe = properties.AfterUrl;
                        string[] nom_url = prefixe.Split('/');
                        string m = nom_url[1];
                        m = m.Substring(4);
                        string a = nom_url[2];
                        int underscore = result.Length - 1;
                        if (underscore == 4)
                        {
                            //item["MARCHE"] = result[0];
                            item["MARCHE"] = m;
                            item["EXERCICE"] = a;
                            item["NUM_NOP"] = result[1];
                            item["MILLESIME"] = result[2].Substring(0, 2) + a.Substring(2, 2);
                            item["PRT_PALIER"] = result[3];
                            item["POLE_DO"] = result[4];
     
                            item["Nom"] = m + "_" + result[1] + "_" + result[2].Substring(0, 2) + a.Substring(2, 2) + "_" + result[3] + "_" + result[4];
                            item.Update();
                            EnableEventFiring();
                        }
     
                    }
                }
     
            }
    Ainsi, quelle que soit l'erreur que l'utilisateur commet, lors d'un clic droit : "modifier les propriétés", je modifie le nom et les champs selon les règles préétablies.
    L'anomalie que je rencontre :
    une fois que la mise à jour du nom du dossier est validée, lorsque sharepoint tente l'update, il me dit qu'il ne trouve pas le dossier !
    Pourtant, lorsque le nom n'est pas retouché dans le formulaire de modification et que je me contente de modifier les champs, l'update fonctionne sans message d'erreur.
    Je n'y comprend rien !

    Quelqu'un peut-il m'éclairer ?

    cordialement
    madmax

  2. #2
    Expert confirmé
    Avatar de ludojojo
    Homme Profil pro
    Développeur SharePoint
    Inscrit en
    Avril 2008
    Messages
    2 967
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France

    Informations professionnelles :
    Activité : Développeur SharePoint
    Secteur : Conseil

    Informations forums :
    Inscription : Avril 2008
    Messages : 2 967
    Points : 5 347
    Points
    5 347
    Billets dans le blog
    5
    Par défaut
    Bonjour,

    Tu as essayé de modifier la propriété "Title" de ton folder plutôt que le "Name" ?
    Je pense que la propriété "Name" est readonly... Tu peux essayer de regarder avec SharePoint Manager ou de faire l'opération en PowerShell...

    Il est peut-être pas impossible qu'il ne soit pas autoriser de la modifier... A tester !

    Le ContentType cible est le ContentType natif ou un custom ? Par ce qu'utiliser son display name est dangeureux...

    EDIT : En fait en relisant ton code, y'a quelque chose qui me chagrine, pourquoi tu n'utilises pas un SPFolder ?
    Il faudrait essayer d'utiliser la class qui correspond à ton élément, afin que l'API fasse le travail.

    Essaye avec quelque chose du type :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    folder.Item[SPBuiltInFieldId.Name] = "New folder name";
    folder.Item.SystemUpdate();
    Aide les autres...
    Et les autres t'aideront....
    Mon site DVP
    N'oubliez pas de consulter les FAQ SharePoint et les cours et tutoriels SharePoint

    N'oubliez pas de voter pour les messages dont la réponse est pertinente

  3. #3
    Membre du Club
    Inscrit en
    Juin 2007
    Messages
    112
    Détails du profil
    Informations forums :
    Inscription : Juin 2007
    Messages : 112
    Points : 65
    Points
    65
    Par défaut
    merci Ludo pour tes suggestions.

    Je pense que le problème n'est pas où tu le situes car dans tous les cas, item["Nom"] est modifié puisque je le reconstruit systématiquement.
    Le souci apparaît lorsque il y a saisie (clic droit, modifier les propriétés) et que la propriété nom est retouchée. Dans ce cas là, sharepoint me dit :
    Impossible d'ouvrir " nom du folder" : ce fichier ou dossier n'existe pas.

    Qui plus est, j'ai la même réponse si j'enlève l'instruction de modification du nom :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    item["Nom"] = m + "_" + result[1] + "_" + result[2].Substring(0, 2) + a.Substring(2, 2) + "_" + result[3] + "_" + result[4];
    ... et que je ne modifie que les champs après l'action "modifier les propriétés".

    J'espère que mon propos est plus clair ?

    merci de ton aide

  4. #4
    Expert confirmé
    Avatar de ludojojo
    Homme Profil pro
    Développeur SharePoint
    Inscrit en
    Avril 2008
    Messages
    2 967
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France

    Informations professionnelles :
    Activité : Développeur SharePoint
    Secteur : Conseil

    Informations forums :
    Inscription : Avril 2008
    Messages : 2 967
    Points : 5 347
    Points
    5 347
    Billets dans le blog
    5
    Par défaut
    Hummm, ok je comprend mieux...
    Alors peut-être que le problème vient du base.ItemUpdated(properties); qui lui doit enregistré la modification faite par l'interface, du coup le folder que tu cherches n'existe plus...

    As-tu essayé de le mettre après ou de faire sans ?
    Aide les autres...
    Et les autres t'aideront....
    Mon site DVP
    N'oubliez pas de consulter les FAQ SharePoint et les cours et tutoriels SharePoint

    N'oubliez pas de voter pour les messages dont la réponse est pertinente

  5. #5
    Membre du Club
    Inscrit en
    Juin 2007
    Messages
    112
    Détails du profil
    Informations forums :
    Inscription : Juin 2007
    Messages : 112
    Points : 65
    Points
    65
    Par défaut
    C'était ça ! Faut pas mettre base.ItemUpdated(properties);
    T'es un génie !

    merci beaucoup
    madmax

  6. #6
    Expert confirmé
    Avatar de ludojojo
    Homme Profil pro
    Développeur SharePoint
    Inscrit en
    Avril 2008
    Messages
    2 967
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France

    Informations professionnelles :
    Activité : Développeur SharePoint
    Secteur : Conseil

    Informations forums :
    Inscription : Avril 2008
    Messages : 2 967
    Points : 5 347
    Points
    5 347
    Billets dans le blog
    5
    Par défaut
    Citation Envoyé par MadMax4 Voir le message
    C'était ça ! Faut pas mettre base.ItemUpdated(properties);
    Il faut bien comprendre que cette ligne permet d'exécuter la fonction de base de la class dont tu hérites. Dans ton cas elle modifie l'item sur lequel tu voulais travailler.
    Attention à réimplémenter la logique si jamais tu ne l'appelles pas, par ce que sinon tes autres champs ne seront pas mis à jour...

    En tout cas, ravi d'avoir pu t'aider !
    Aide les autres...
    Et les autres t'aideront....
    Mon site DVP
    N'oubliez pas de consulter les FAQ SharePoint et les cours et tutoriels SharePoint

    N'oubliez pas de voter pour les messages dont la réponse est pertinente

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [WSS3] évènement ItemUpdated . Encore !
    Par MadMax4 dans le forum Développement Sharepoint
    Réponses: 1
    Dernier message: 07/05/2014, 15h20
  2. Pas d'événement OnClose quand on arrête W2K
    Par Altau dans le forum C++Builder
    Réponses: 9
    Dernier message: 26/01/2009, 18h36
  3. exploiter un évènement d'un sous composant dans un
    Par bjl dans le forum Composants VCL
    Réponses: 2
    Dernier message: 20/12/2002, 16h44
  4. Modification de l'évènement OnClick
    Par MrJéjé dans le forum C++Builder
    Réponses: 9
    Dernier message: 22/08/2002, 12h52
  5. Redéfinir l'événement OnExit de mon composant TEditFloat
    Par Seb des Monts dans le forum C++Builder
    Réponses: 5
    Dernier message: 18/06/2002, 16h10

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo