Afficher une liste de statuts dans un Dropdown en fonction du rôle de l'utilisateur connecté

Étiquetté : ,

  • Afficher une liste de statuts dans un Dropdown en fonction du rôle de l'utilisateur connecté

    Posté par RANDRIATAHINA Charles sur 21 novembre 2022 à 10h31

    Bonjour,

    J’ai une liste de statuts en Dropdown sur mon app Power Apps. J’ai fait en sortes que les statuts disponibles pour la selection dépendent du rôle de l’utilisateur connecté. Je suis arrivé à faire fonctionner la condition pour afficher le statut en fonction de l’utilisateur connecté en passant par une collection :

    If(varResult.reviewer="True", ClearCollect(n        colStatusDropdown,n        "Draft",n        "Submitted",n        "Deployed",n        "Under evaluation",n        "Ready for IRM review",n        "Under IRM review",n        "Approved",n        "Rejected"n    ),ClearCollect(n        colStatusDropdown,n        "Draft",n        "Submitted",n        "Deployed"n    )

    Lorsque j’essaie de sauvegarder la donnée saisie dans SharePoint, cela n’a pas pris en compte le statut séléctionné dans le dropdown. Je pense qu’il faudra que je change la propriété “Update” de la datacard Statut, mais j’ai aucune idée par rapport à la fonction qu’il faut utiliser.

    Quelqu’un aurait une idée ?

    Merci

    PostID=MJxzdiFfpGOhFgv

    RANDRIATAHINA Charles a répondu Il y a 11 mois, 3 semaines 1 Membre · 4 Réponses
  • 4 Réponses
  • R3dKap

    Membre
    21 novembre 2022 à 13h10

    Salut RANDRIATAHINA Charles,

    Alors, pour moi (en tout cas c’est toujours comme ça que je procède), lorsque l’on veut filtrer une liste de valeurs d’un champ dropdown parce-que derrière il y a une colonne de type Choice par exemple, alors je travaille toujours sur le contenu par défaut de la dropdown, à savoir le résultat de Choices().

    Je m’explique…

    Lorsque dans un formulaire tu as un datacard pour une colonne de type Choice (ou LookUp) alors le contrôle dans le datacard est une combo box (je dis bien une “combo box”, pas une “dropdown” qui est un contrôle différent et moins puissant).

    Dans la propriété Items de cette combo box on y retrouve ceci :

    Choices(TaListeSharePoint.TaColonne)

    Cela a pour effet de générer automatiquement derrière une table qui a la bonne structure selon le type de colonne, à savoir :

    • Dans le cas d’une colonne de type Choice :

    [n    { Value: "<valeur>" },n    { Value: "<valeur>" },n    ...n]
    • Dans le cas d’une colonne de type LookUp :

    [n    {n        Id: "<ID SharePoint>",n        Value: "<valeur>"n    },n    {n        Id: "<ID SharePoint>",n        Value: "<valeur>"n    },n    ...n]

    Donc, quoiqu’il arrive, il est absolument impératif que dans le Items de ta combo box tu respectes cette structure de données.

    C’est pour respecter cette structure de données que je travaille toujours sur le Choices(Liste, Colonne) pour générer les éléments finaux que je veux rendre disponibles dans ma combo box.

    Du coup, si tu veux filtrer les valeurs de ta colonne de type Choice, il faudrait le faire comme ceci :

    Filter(n    Choices(TaListe, TaColonne),n    Value in If(n        varResult.reviewer = "True",n        ["Draft",n        "Submitted",n        "Deployed",n        "Under evaluation",n        "Ready for IRM review",n        "Under IRM review",n        "Approved",n        "Rejected"],n        ["Draft",n        "Submitted",n        "Deployed"]n    )n)

    Tu vois la logique ?

    Mais c’est pas une obligation non plus. Tu peux aussi modifier, comme tu le suggère, la propriété Update de ton datacard pour faire en sorte que tu envoies à SharePoint la donnée dans le bon format ({Value: "Valeur"}) mais ça c’est quelque chose que j’essaie d’éviter en général.

    Ceci étant dit, y’a quand même un truc bizarre : c’est que de la manière dont tu construis ta collection, elle a bien au final une structure du type :

    [n    { Value: "Draft" },n    { Value: "Submitted" },n    ...n]

    …qui est celle attendue par SharePoint sur une colonne de type Choice. Donc, ça devrait marcher. Mais peut-être y a-t-il une différence interne très subtile (que je ne maîtrise pas bien encore aujourd’hui) entre la TABLE qui est générée par le Choices() et la COLLECTION qui est générée par le ClearCollect().

    CommentID=oRWO3bBiXG8JvZf, PostID=MJxzdiFfpGOhFgv

    • RANDRIATAHINA Charles

      Membre
      22 novembre 2022 à 9h15

      Bonjour R3dKap ,

      Merci beaucoup pour ces explications très détaillées et précises.

      J’avais effectivement utilisé une colonne de type lookup pour les statuts. Je l’ai finalement changé en type choix, et cela a permis de résoudre mon problème de sauvegarde. Dans tous les cas, tes astuces sont vraiment indispensables pour comprendre la structure de dropdown ( choix vs Lookup) dans Power Apps.

      SubCommentID=fBtCLP3Bo79EKT2, CommentID=oRWO3bBiXG8JvZf, PostID=MJxzdiFfpGOhFgv

  • DavidZed

    Membre
    21 novembre 2022 à 14h47

    Normalement ça devrait fonctionner si tes statuts sont bien dans une colonne de type choix

    Peux-tu vérifier comment cela se comporte en passant par une variable plutôt qu’un collection ? exemple :

    Set(VarNoname,["Draft","Submitted","Deployed","Under evaluation","Ready for IRM review","Under IRM review","Approved","Rejected"])

    CommentID=bQkBU2D67aiTLEc, PostID=MJxzdiFfpGOhFgv

    • RANDRIATAHINA Charles

      Membre
      22 novembre 2022 à 9h16

      Hello DavidZed ,

      Merci beaucoup pour ta réponse.

      En effet, en changeant le type de ma colonne de Lookup au type choix, cela m’a permis de résoudre le problème et ma formule sur Power Apps a bien fonctionné.

      SubCommentID=t7Mbn6m7EqMHjVo, CommentID=bQkBU2D67aiTLEc, PostID=MJxzdiFfpGOhFgv

Connectez-vous pour répondre.