Galeries imbriquées : accéder à l'élément parent

  • Galeries imbriquées : accéder à l'élément parent

    Posté par R3dKap sur 24 juillet 2024 à 22h50

    Lorsque l’on imbrique 2 galeries dans Power Apps, il est souvent nécessaire d’accéder à l’élément de la galerie parente depuis la galerie enfant.

    Par exemple, dans une galerie verticale qui liste des projets on place une galerie horizontale qui liste des dates pour effectuer une saisie des temps :

    Depuis cette galerie enfant, il faut pouvoir savoir sur quel projet on se trouve dans la galerie parente afin d’afficher la saisie des temps pour la date concernée dans la galerie enfant.

    Nativement ce n’est pas possible : on ne peut pas écrire quelque chose du type Parent.Parent.ThisItem.

    Il existe 2 astuces pour palier à ce problème…

    Ajouter un contrôle dans la galerie parente

    Cette technique consiste donc à placer dans la galerie parente un libellé qui va contenir la donnée souhaitée (par exemple ici un libellé masqué nommé lblProjetID qui va contenir l’identifiant du projet en cours).

    La valeur de ce libellé peut alors être utilisé dans la galerie enfant (sur le text input en blanc sur le schéma) de la manière suivante :

    LookUp(SAISIES; ProjetID = lblProjetID.Text && Date = ThisItem.Date).Temps

    Ajouter une colonne dans la galerie enfant

    L’idée ici est d’ajouter une colonne à la source de données qui alimente la galerie enfant avec la donné nécessaire. Ainsi, si la galerie enfant est alimentée avec un Filter(DATE; Semaine = WeekNum(Today())), l’idée est de lui ajouter l’identifiant du projet pour qu’il puisse être utilisé dans la galerie enfant :

    AddColumns(Filter(DATE; Semaine = WeekNum(Today())); _ProjetID = ThisItem.ID) (le ThisItem ici faisant référence au projet actif de la galerie parente)

    Le LookUp() sur le text input en blanc sur le schéma peut alors être écrit ainsi :

    LookUp(SAISIES; ProjetID = ThisItem._ProjetID && Date = ThisItem.Date).Temps

    Note : je trouve personnellement qu’une bonne pratique consiste à préfixer le nom des colonnes ajoutées via un AddColumns() avec un caractère “_”… 😉

    Et voilààààà… 😜

    Alexandre a répondu Il y a 2 mois, 1 semaine 2 Membres · 4 Réponses
  • 4 Réponses
  • Alexandre

    Membre
    24 juillet 2024 à 23h06

    Pourquoi ne pas ajouter une colonne aux enregistrements de la collection enfant avec l’id du parent ?

  • R3dKap

    Membre
    25 juillet 2024 à 11h40

    Certes… Mais parfois on utilise le ThisItem enfant pour enregistrer les données et avoir une colonne supplémentaire peut gêner puisqu’il ne fait pas partie de la source de données de la galerie enfant.

    Mais selon les cas effectivement ça peut être également une bonne technique… 👍

  • R3dKap

    Membre
    27 juillet 2024 à 10h10

    @Alexandre, j’ai intégré au post la technique du AddColumns()… 😉

  • Alexandre

    Membre
    27 juillet 2024 à 10h15

    Top 👍

Connectez-vous pour répondre.