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

SharePoint .NET Discussion :

Remplir un Lookup d'une liste à partir d'une autre colonne de cette même liste


Sujet :

SharePoint .NET

  1. #1
    Futur Membre du Club
    Profil pro
    Inscrit en
    Juillet 2008
    Messages
    11
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2008
    Messages : 11
    Points : 6
    Points
    6
    Par défaut Remplir un Lookup d'une liste à partir d'une autre colonne de cette même liste
    Salut à tous,

    j'ai créé une webpart qui va modifier une liste et y ajouter un field Lookup.

    Jusque là tout va bien, il fonctionne correctement.

    Maintenant, je souhaiterais remplir ce champs à partir d'une autre colonne de la même liste.

    Comment puis-je donc faire?

    Pour l'instant, je me débrouille comme ceci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    foreach (SPListItem item in collection[Maliste].Items)
            {
                try
                {
                    string test = item["Title"].ToString();
                    item["Category"] = test;
                    item.Update();
                }
                catch
                {
     
                    //item["Category"] = "Default Category";
                }
            }
    Malheureusement, cela ne fonctionne pas et je suis à chaque fois renvoyé dans l'exception.

    Quelqu'un a-t-il déjà eu ce problème?

    Merci beaucoup !

  2. #2
    Membre à l'essai
    Inscrit en
    Juin 2006
    Messages
    19
    Détails du profil
    Informations forums :
    Inscription : Juin 2006
    Messages : 19
    Points : 24
    Points
    24
    Par défaut
    SPFieldLookupValue est ton ami

  3. #3
    Futur Membre du Club
    Profil pro
    Inscrit en
    Juillet 2008
    Messages
    11
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2008
    Messages : 11
    Points : 6
    Points
    6
    Par défaut
    Merci mais comment l'implémenter pour qu'elle puisse faire autre chose qu'un get cette classe?

    J'avais déjà regardé la doc microsoft à ce sujet, mais il n'y avait vraiment pas de quoi casser des briques.

    Un petit coup de main?

    Merci !

  4. #4
    Membre régulier
    Inscrit en
    Août 2007
    Messages
    62
    Détails du profil
    Informations personnelles :
    Âge : 45

    Informations forums :
    Inscription : Août 2007
    Messages : 62
    Points : 72
    Points
    72
    Par défaut
    Le SPFieldLookupValue vous donne une aide, libre à vous de l'utiliser ou non. Si vous tenez à le faire manuellement, un champ LookUp est constitué comme suit :

    ID#;Value ou ID est la colonne ID de la ligne référencée, et Value sa valeur pour la colonne choisie. Autrement dit, vous pouvez faire cette affectation manuellement ainsi :

    myItem["myField"] = "3#;mavaleur";
    myItem.Update();

    Mais bon... préférez SPFieldLookUpValue.

  5. #5
    Futur Membre du Club
    Profil pro
    Inscrit en
    Juillet 2008
    Messages
    11
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2008
    Messages : 11
    Points : 6
    Points
    6
    Par défaut
    Salut gribouillon,

    je ne comprends vraiment pas le SPFieldLookupValue, pourrais-tu être plus précis?

    J'ai beau faire un :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     try
                {
                    string title = item["Title"].ToString();
                    string id = item["ID"].ToString();
                    string test2 = item["Name"].ToString();
                    item["Category"] = id + "#;" + title;
                    item.Update();
                }
                catch
                {
     
                    //item["Category"] = "Default Category";
                }
    rien à faire, on continue à entrer dans le catch :/

    Tout ce que je souhaites faire c'est récupérer la valeur du title de l'élement de la liste en cours pour le recopier dans le champ Category qui est un lookup sur une autre liste.

    En fait, il s'agit d'une methode qui est appelée à l'initialisation d'une webpart pour formaliser une liste.

    Je souhaiterais que la colonne soit pré-remplie en fonction des éléments de son titre, mais je voudrais que lorsque l'utilisateur ajoutera un nouvel item, il puisse avoir un lookup sur une autre liste

    Merci beaucoup !

  6. #6
    Membre chevronné

    Profil pro
    Inscrit en
    Décembre 2007
    Messages
    760
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2007
    Messages : 760
    Points : 2 050
    Points
    2 050
    Par défaut
    Salut,
    si tu fais un lookup sur une autre liste, il faut que ta valeur soit présente dans l'autre liste, sinon ca ne fonctionnera pas.
    donc tu as beau essayer d'affecter la valeur de ton titre dans ta colonne lookup, mais si cette valeur n'existe pas dans la colonne destination, SharePoint te déclenchera tjrs une erreur de validation.

  7. #7
    Futur Membre du Club
    Profil pro
    Inscrit en
    Juillet 2008
    Messages
    11
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2008
    Messages : 11
    Points : 6
    Points
    6
    Par défaut
    Salut dnt91,

    En effet, le texte que j'essaye d'entrer est présent dans l'autre liste, mais je pense que le souci vienne de l'ID. Il me semble logique que dans l'autre liste, on ne retrouve pas du tout les mêmes ID.

    Mais comment faire du coup pour que les ID correspondent bien entre eux? une requête CamL au mieu de tout ça pour aller chercher l'ID correspondant dans l'autre liste?

  8. #8
    Membre chevronné

    Profil pro
    Inscrit en
    Décembre 2007
    Messages
    760
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2007
    Messages : 760
    Points : 2 050
    Points
    2 050
    Par défaut
    Voici un snippet qui devrait t'aider à résoudre ton problème
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    SPList destList = web.Lists["Liste de destination"];
    SPListItem destItem = list.Items[0];//en gros la valeur à récupérer éventuellement après un foreach + break;
    SPFieldLookupValue destValue= new SPFieldLookupValue(destItem ["TaColonne"].ToString());
     
    tonItem["TaColonne"] = destValue;
    tonItem.Update()
    si tu ne souhaite pas travailler avec un SPFieldLookupValue, tu peux également travailler avec un SPField et dans le foreach, tester si ta valeur est égale à desitem["Colonne"].ToString().Split('#')[1]; ce qui te permet de récupérer la valeur. pour récupérer l'ID, il suffit d'utiliser Split('#')[0].

    Voila, ca devrait suffire.
    ++

  9. #9
    Futur Membre du Club
    Profil pro
    Inscrit en
    Juillet 2008
    Messages
    11
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2008
    Messages : 11
    Points : 6
    Points
    6
    Par défaut
    Suis pas sûr d'avoir tout compris

    J'essaye d'être plus clair.

    j'ai la liste1 qui contient un champ que l'on appelle getCat. Ce champs est un simple texte.

    j'ai la liste2 (liste de destination si j'ai bien compris), qui contient un champ title (single line of text) et un champ Category, dont la définition est un lookup sur le champ getCat de la liste1.

    Je veux dans un premier temps, remplir le champ Category par la valeur de title (liste2). Précision : les valeurs qui sont dans title sont également dans getCat de la liste1.


    A terme, je souhaiterais que les utilisateurs puissent récupérer les valeurs directement via le lookup normal

Discussions similaires

  1. Réponses: 3
    Dernier message: 07/04/2011, 14h38
  2. [Batch] Créer une chaine à partir d'une variable et d'une autre chaine
    Par mlle lain dans le forum Scripts/Batch
    Réponses: 1
    Dernier message: 10/11/2009, 16h26
  3. Saisir une image à partir d'une photo ou d'une vidéo
    Par lohengrin56 dans le forum Flash/Flex
    Réponses: 0
    Dernier message: 07/07/2009, 16h17
  4. Réponses: 2
    Dernier message: 05/01/2009, 12h45
  5. Réponses: 5
    Dernier message: 22/05/2008, 14h42

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