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 :

[SP-2010]dev gestion de document C#


Sujet :

Développement Sharepoint .NET

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Homme Profil pro
    Inscrit en
    Janvier 2012
    Messages
    105
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Janvier 2012
    Messages : 105
    Par défaut [SP-2010]dev gestion de document C#
    bonjour à tous!
    je dois réaliser un dev lié à de la gestion de documents. et accéder aux méta-données de documents dans une bibliothéque Sharepoint.
    apparement, celon les sources que l'on m'a fourni, on peut accéder aux propriétés par une gestion évènementielle de la liste (procédures ItemAdded, ItemUpdated par exemple). Il faut créer une classe qui hérite de la classe Microsoft. SharePoint. SPItemEventReceiver.

    voilà pour la base! on m'a fourni un peu de code pour m'aider a comprendre... mais sa m'embrouille un peu, j'arrive a comprendre "a peu près" la procédure ItemAdded mais pour ItemUpdated... bah je comprend vraiment rien.

    j'aurais besoin d'un peu d'aide pour m'éclaircir ce code:

    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
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    121
    122
    123
    124
    125
    126
    127
    128
    129
    130
    131
    132
    133
    134
    135
    136
    137
    138
    using System;
    using System.Collections.Generic;
    using System.Text;
    using Microsoft.SharePoint;
    using System.IO;
     
    namespace NVL_MOSS_Reunion
    {
        public class ObjectifReunion : SPItemEventReceiver
        {
            private const String strSite = "adresse de mon site";
            private const String strLibObj = "Mes Devis";
            private const String strLstReu = "Réunions";
            private const String strLstTach = "Tâches Réunion";
            private const String strLibDoc = "Comptes rendus Réunion";
            private const String strRepTmp = "chemin de dossier";
     
            // Evénement de liste "Réunions" : Après Ajout
            public override void ItemAdded(SPItemEventProperties p)
            {
                SPSite site = new SPSite(strSite);
                SPWeb web = site.OpenWeb();
                SPDocumentLibrary libObjectifs = (SPDocumentLibrary)web.Lists[strLibObj];
                SPList listeReu = web.Lists[strLstReu];
                String s = p.AfterProperties["Title"].ToString();
                foreach (SPListItem elementO in libObjectifs.Items)
                {
                    if (elementO["Traité"].Equals(false))
                    {
                        foreach (SPListItem elementR in listeReu.Items)
                        {
                            if (elementR["Title"].ToString().Equals(s))
                            {
                                elementO["Réunion"] = elementR.ID;
                                elementO.Update();
                                break;
                            }
                        }
                    }
                }
            }
     
            // Evénement de liste "Réunions" : Après Modification
            public override void ItemUpdated(SPItemEventProperties p)
            {
                SPSite site = new SPSite(strSite);
                SPWeb web = site.OpenWeb();
                SPList listeReu = web.Lists[strLstReu];
                SPList listeTaches = web.Lists[strLstTach];
                SPDocumentLibrary libOjectifs = (SPDocumentLibrary)web.Lists[strLibObj];
                String titleReunion = p.ListItem["Title"].ToString();
                String lieu = p.ListItem["Lieu"].ToString();
                int codeReunion = p.ListItemId;
                if (p.ListItem["Validée"].Equals(true))
                {
                    StreamWriter sw = new StreamWriter(strRepTmp + "CR " + titleReunion + ".html", false, Encoding.UTF8);
                    sw.WriteLine("<html><body>");
                    sw.WriteLine("<h2 align='center'>Compte Rendu : " + titleReunion + "</h2><hr>");
                    // Gestion des objectifs
                    sw.WriteLine("<font color='#008000'><h3 align='center'>Liste des objectifs</h3></font>");
                    sw.WriteLine("<table align='center' width='75%' border='1'>");
                    sw.WriteLine("<tr><th>Objectif</th><th>Traité ?</th><th>Décision</th></tr>");
                    foreach (SPListItem elementO in libOjectifs.Items)
                    {
                        int pos = elementO["Réunion"].ToString().IndexOf(";");
                        String code = elementO["Réunion"].ToString().Substring(0, pos);
                        if (codeReunion.ToString().Equals(code))
                        {
                            String choix = "";
                            if (elementO["Traité"].Equals(true))
                                choix = "Oui";
                            else
                                choix = "Non";
                            //Oter l'extension du nom du document
                            String nomObj = elementO["Nom"].ToString();
                            pos = elementO["Nom"].ToString().IndexOf(".");
                            if (pos != -1)
                                nomObj = elementO["Nom"].ToString().Substring(0, pos);
                            sw.WriteLine("<tr><td align='center'>" + nomObj + "</td><td align='center'>" + choix
                                + "</td><td align='center'>" + elementO["Décision"] + "</td></tr>");
                        }
                    }
                    sw.WriteLine("</table>");
                    // Gestion des tâches
                    sw.WriteLine("<font color='#008080'><h3 align='center'>Liste des tâches</h3></font>");
                    sw.WriteLine("<table align='center' width='75%' border='1'>");
                    sw.WriteLine("<tr><th>Titre</th><th>Assignée à</th><th>Début</th><th>Echéance</th><th>Etat</th></tr>");
     
                    foreach (SPListItem e in listeTaches.Items)
                    {
                        String libReunion = "";
                        int pos = e["Réunion"].ToString().IndexOf("#");
                        if (pos != -1)
                            libReunion = e["Réunion"].ToString().Substring(pos + 1);
                        if (libReunion.Equals(titleReunion))
                        {
                            //Oter l'Id, le ; et le dièse de l'assigné
                            int posDiese = e["Assigné à"].ToString().IndexOf("#");
                            String affectation = "";
                            if (posDiese != -1)
                            {
                                affectation = e["Assigné à"].ToString().Substring(pos + 1);
                            }
                            //Oter heure Date de début
                            String datedebut = "";
                            int posEspace = e["Date de début"].ToString().IndexOf(" ");
                            if (posEspace != -1)
                            {
                                datedebut = e["Date de début"].ToString().Substring(0, posEspace);
                            }
                            //Oter heure Echéance
                            String echeance = "";
                            posEspace = e["DueDate"].ToString().IndexOf(" ");
                            if (posEspace != -1)
                            {
                                echeance = e["DueDate"].ToString().Substring(0, posEspace);
                            }
                            sw.WriteLine("<tr align='center'><td>"+e["Title"]+"</td><td>"+affectation+"</td><td>"+
                               datedebut+"</td><td>"+echeance+"</td><td>"+
                               e["Status"]+"</td></tr>");
                        }
                    }
                    sw.WriteLine("</table><br>");
                    sw.WriteLine("<p align='center'><font size='+1'><b><a href='#' onclick='javascript:window.history.back();'>Retour</a></b></font></p>");
                    sw.WriteLine("</body></html>");
                    sw.Close();
                    SPDocumentLibrary libReunions = (SPDocumentLibrary)web.Lists[strLibDoc];
                    byte[] bytes = File.ReadAllBytes(strRepTmp + "CR " + titleReunion + ".html");
                    SPFile f = libReunions.RootFolder.Files.Add("Compte rendu " + titleReunion + ".html", bytes, true);
                    libReunions.Update();
                    f.Properties["Réunion"] = titleReunion;
                    f.Update();
                    libReunions.Update();
                    File.Delete(strRepTmp + "CR " + titleReunion + ".html");
                }
            }        
        }
    }

  2. #2
    Expert confirmé Avatar de Lapinpanda
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Juin 2009
    Messages
    3 230
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Juin 2009
    Messages : 3 230
    Par défaut
    Tu as 4 évènement pour toi qui peuvent te concerner :

    ItemAdding :
    Création d'un nouvel élément en cours, Cancel possbile
    ItemAdded :
    Création d'un nouvel élément effectué, Cancel impossbile

    ItemUpdating :
    Mise à jour d'un nouvel élément en cours, Cancel possbile
    ItemUpdated :
    Mise à jour d'un nouvel élément effectué, Cancel impossbile

    Voila pour le cours théorique.

  3. #3
    Membre confirmé
    Homme Profil pro
    Inscrit en
    Janvier 2012
    Messages
    105
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Janvier 2012
    Messages : 105
    Par défaut
    ok, merci.

    j'aimerais savoir comment résoudre une petite erreure:

    j'ai inclus l'assembly Microsoft.Sharepoint.dll, mais on me disait qu'elle dépendait de d'autre assembly, alors, j'ai inclus les autres demandés, et, à l’exception de System.ServiceModel.dll, ils ont tous un warning d’accolé à eux, avec le message d'erreur:

    C:\Windows\Microsoft.NET\Framework\v4.0.30319\Microsoft.Common.targets(1360,9): warning MSB3252: Impossible de résoudre l'assembly "{nom de mes DLL}". L'assembly ne figure pas dans le Framework ciblé actuel ".NETFramework,Version=v4.0,Profile=Client". Supprimez les références aux assemblys qui ne se trouvent pas dans le Framework ciblé ou reciblez votre projet.
    pour plus de clarté, je vous joins aussi l'apparence de mon arbre de projet:


  4. #4
    Membre confirmé
    Homme Profil pro
    Inscrit en
    Janvier 2012
    Messages
    105
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Janvier 2012
    Messages : 105
    Par défaut
    j'ai résolu moi-même mon problème, pour les curieux, j'ai changé la plateforme cible de la "4.0 client" à 4.0.
    je ne m'explique pas sa très bien mais sa marche

  5. #5
    Membre confirmé
    Homme Profil pro
    Inscrit en
    Janvier 2012
    Messages
    105
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Janvier 2012
    Messages : 105
    Par défaut
    j'aurais quelques petites question sur les objets que je manipule, des questions de débutant surtout:

    quelle différence entre SPDocumentLibrary et SPList?

    que désigne SPItemEventProperties?

    soit le code suivant:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    SPItemEventProperties p;
    String chaine = p.ListItem["Trololo"].ToString();
    est-ce que "chaine" va contenir la chaine de caractère contenu dans une colonne "trololo" pour un élément précis?

    merci d'avance.

  6. #6
    Expert confirmé Avatar de Lapinpanda
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Juin 2009
    Messages
    3 230
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Juin 2009
    Messages : 3 230
    Par défaut
    Citation Envoyé par supierre Voir le message
    j'aurais quelques petites question sur les objets que je manipule, des questions de débutant surtout:

    quelle différence entre SPDocumentLibrary et SPList?
    SPDocumentLibrary désigne une Doc Lib, par exemple une "liste" qui ne contiendra que des documents

    que désigne SPItemEventProperties?
    Msdn est ton ami

    soit le code suivant:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    SPItemEventProperties p;
    String chaine = p.ListItem["Trololo"].ToString();
    est-ce que "chaine" va contenir la chaine de caractère contenu dans une colonne "trololo" pour un élément précis?
    Non, tu va chercher une colonne qui a pour Internal name Trololo
    merci d'avance.

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

Discussions similaires

  1. Gestion Pièces/Documents Joints sous Access 2003.
    Par botakelymg dans le forum Access
    Réponses: 4
    Dernier message: 07/05/2008, 10h59
  2. [DEV] Insérer un document dans une biliothèque MOSS
    Par siavs dans le forum SharePoint
    Réponses: 2
    Dernier message: 20/03/2008, 14h54
  3. gestion de documents
    Par jlandrei dans le forum Internet
    Réponses: 1
    Dernier message: 29/10/2007, 14h17
  4. [Tableaux] Gestion de document
    Par Captain_futur dans le forum Langage
    Réponses: 6
    Dernier message: 21/03/2006, 08h36

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