Collection : est-il possible de mettre une collection dans la propriété Update d'une combobox ?

Étiquetté : ,

  • Collection : est-il possible de mettre une collection dans la propriété Update d'une combobox ?

    Posté par RANDRIATAHINA Charles sur 20 décembre 2022 à 17h27

    Bonjour,

    J’aimerais savoir s’il est possible de mettre une collection dans la propriété Update d’une carte de donnée Combobox afin de sauvegarder les valeurs dans la colonne SharePoint correspondante ?

    J’ai testé mais ça a l’air de ne pas fonctionner.
    C’est pourquoi, je pose la question.

    Merci.

    PostID=3pyNQec9Cg3stkI

    R3dKap a répondu Il y a 10 mois, 3 semaines 1 Membre · 12 Réponses
  • 12 Réponses
  • DavidZed

    Membre
    20 décembre 2022 à 17h53

    Hello RANDRIATAHINA Charles ,

    Si tu dois enregistrer une collection ou une table de de données contenant plusieurs colonnes dans une seule ‘cellule’ SP, c’est possible en utilisant la fonction ParseJSON(). Mais c’est une fonctionnalité encore expérimentale et il est déconseillé de l’utiliser dans une solution de production.

    Tu trouveras de la doc ici :

    https://powerapps.microsoft.com/en-us/blog/power-fx-introducing-parsejson/

    https://learn.microsoft.com/fr-fr/power-platform/power-fx/reference/function-parsejson

    Pour ma part je l’ai mis en place facilement en suivant les étapes de cette vidéo :

    https://www.youtube.com/watch?app=desktop&v=FqfLiJDdC3Q

    CommentID=061u11oPP4Y31ga, PostID=3pyNQec9Cg3stkI

    • RANDRIATAHINA Charles

      Membre
      21 décembre 2022 à 12h11

      Hello DavidZed
      Merci beaucoup pour ces détails 🙂

      SubCommentID=Y0o7bV7Cc0jHbFB, CommentID=061u11oPP4Y31ga, PostID=3pyNQec9Cg3stkI

  • R3dKap

    Membre
    21 décembre 2022 à 9h10

    RANDRIATAHINA Charles à mon avis, il y a lieu de creuser ton besoin originel car ta demande est peu conventionnelle et elle doit cacher quelque chose qui peut peut-être réalisé différemment. Si tu nous en dis plus on pourra peut-être t’aiguiller vers une solution différente et tout aussi efficace… 😉

    CommentID=ETnklTOAQ6mQe3v, PostID=3pyNQec9Cg3stkI

  • RANDRIATAHINA Charles

    Membre
    21 décembre 2022 à 12h10

    En effet, voici les détails du cas d’usage :
    J’ai une liste SharePoint principale (Liste A) que j’utilise comme source de données principale pour le formulaire de mon application Power Apps.
    Et j’ai une deuxième liste (Liste B) où il y a 2 colonnes : Tilte (Texte), Checked(Yes/No). J’ai déjà quelques lignes des données prédéfinies dans cette liste B.
    Ensuite, sur l’écran formulaire de mon app Power Apps :
    – Dans une datacard, j’affiche certains éléments de ma liste B en utilisant une gallerie afin que l’utilisateur puisse séléctionner un certain nombre d’éléments de la liste B en créant un nouvel élément pour la liste A. La séléction doit se faire pas des checkbox placés à côté de chaque élément de la liste B de la gallerie. En séléctionnant un élément (OnCheck), on créé une collection pour stocker l’élément séléctionné.
    – Ensuite, on devrait être capable de sauvegarder également ces éléments séléctionnés dans une colonne SharePoint de la liste A lors de la création d’un nouvel élément.

    Alors je cherche un moyen pour récupérer les valeurs séléctionnées stockées dans la collection pour les mettre dans une colonne SharePoint ( combobox, ou texte)

    Merci 😄

    CommentID=1WPzqMuLCzq8P4d, PostID=3pyNQec9Cg3stkI

  • DavidZed

    Membre
    21 décembre 2022 à 14h30

    Arf j’avais une réponse assez longue et complète, mais j’ai tout perdu. Alors en gros, il faut que tu présentes une table au format attendu dans ton update, donc une table qui a deux colonnes : ‘Id’ et ‘Value’.

    Ceci étant, si tu mets une collection ou une source de données filtrées dans ton update, ça ne fonctionnera pas, même si le format est bon, il va falloir passer par une variable

    Dans ta gallerie, mets directement la source de données de ta colonne de recherche

    Si tu utilises un checkbox dans ta galerie, tu peux mettre dans le OnSelect :

    UpdateContext({vMulti:Filter(Choices([@'Sample List'].MultipleLookup),Id in Filter(Gallery11.AllItems,Checkbox1.Value).ID)})

    Tu peux aussi faire une formule à base de ShowColumns(RenameColumns(Filter(….

    et dans l’update du DataCard, tu peux mettre :

    vMulti

    CommentID=RiVQiwcw4bCwsGe, PostID=3pyNQec9Cg3stkI

    • RANDRIATAHINA Charles

      Membre
      21 décembre 2022 à 15h16

      Merci beaucoup pour ton aide. Si j’ai bien compris je dois mettre la formule UpdateContext() au niveau de la propriété OnSelect de ma gallerie ?

      SubCommentID=RjuKQs6TatkN1pF, CommentID=RiVQiwcw4bCwsGe, PostID=3pyNQec9Cg3stkI

    • DavidZed

      Membre
      21 décembre 2022 à 15h21

      du checkbox dans la galerie

      SubCommentID=Xi4K436d9r9Gg59, CommentID=RiVQiwcw4bCwsGe, PostID=3pyNQec9Cg3stkI

  • R3dKap

    Membre
    21 décembre 2022 à 14h32

    Ok, je vois très bien ton use case : c’est un peu comme créer un enregistrement d’intervention sur chantier où dans ton formulaire tu coches le matériel que tu vas emmener avec toi.

    Deux solutions :

    1. Dans ta liste A tu crées une colonne de type lookup multiple qui pointe vers B.Title et tu l’utilises pour stocker les éléments sélectionnés de ta liste B lorsque tu crées ton élément dans A

    2. Tu crées une nouvelle liste qui fait le lien entre ton élément de A et ton élément de B et tu y crées une ligne pour chaque lien A-B

    Que préfères-tu ? Attention, la solution 1 est presque plus chiante à gérer à cause de la colonne lookup multi. A toi de voir… 😉

    CommentID=LhjEDmWZc42lkuk, PostID=3pyNQec9Cg3stkI

    • RANDRIATAHINA Charles

      Membre
      21 décembre 2022 à 15h11

      Tu as tout compris. C’est exactement ça l’use case.
      J’ai justement mis en place la première option et c’est bien là où je suis bloqué, j’arrive pas à repliquer dans ma colonne lookup de la liste A ce que j’ai séléctionné par rapport à la liste B. On dirait que j’ai choisi l’option la plus chiante 😐

      SubCommentID=eOW0LoTFKFvXXVt, CommentID=LhjEDmWZc42lkuk, PostID=3pyNQec9Cg3stkI

    • R3dKap

      Membre
      21 décembre 2022 à 15h37

      Alors, ce que je te recommande de faire :

      • à l’arrivée sur l’écran du formulaire, si le mode de ton formulaire est différent du mode FormMode.New il faut que tu mettes l’item concerné de la liste A dans une variable locItem ; s’il est en mode New tu mets Blank() dans locItem

      • tu mets locItem sur le Item de ton formulaire

      • dans ton formulaire tu as un datacard pour ton lookup multi (je l’appelle LookupMulti) de ta liste A

      • c’est dans ce datacard que tu dois mettre ta galerie (je l’appelle GalleryA) et tu masques la combo box

      • ensuite, la source de données de ta galerie (le Items) doit être ListeB

      • dans la galerie tu mets un label avec ThisItem.Title pour afficher tous les éléments de ta liste B (dans ton use case tu ne parles pas du rôle de la colonne Check donc je n’en parle pas non plus, mais je soupçonne qu’elle a peut-être un rôle)

      • tu rajoutes une case à cocher (je l’appelle CheckBoxB) dans la galerie avec :

        • Default = !IsBlank(locItem) && ThisItem.ID in ShowColumns(locItem.LookupMulti; "Id")

      • sur le DefaultSelectedItems de ComboBoxA tu mets :

        • RenameColumns(ShowColumns(Filter(GalleryA.AllItems; CheckBoxB.Value); "ID"; "Title"); "ID"; "Id"; "Title"; "Value")

      Et ça devrait marcher. Mais j’ai fais ça de tête donc y’a sûrement des petites coquilles. Mais le principe est là… Essaie de voir si tu le comprends et reviens vers moi si ça coince… 😉

      SubCommentID=ERsrNaeHKH3K2W5, CommentID=LhjEDmWZc42lkuk, PostID=3pyNQec9Cg3stkI

    • RANDRIATAHINA Charles

      Membre
      22 décembre 2022 à 9h12

      Hello R3dKap et DavidZed
      Un grand merci pour votre aide et l’inspiration 🙂 .
      Tout fonctionne maintenant.

      SubCommentID=UvTmCKc9CxvDgrW, CommentID=LhjEDmWZc42lkuk, PostID=3pyNQec9Cg3stkI

  • R3dKap

    Membre
    21 décembre 2022 à 14h33

    LOL… On a répondu en même temps avec David 😅

    CommentID=CShVOLJ6X5y7cmJ, PostID=3pyNQec9Cg3stkI

Connectez-vous pour répondre.