gallery et formulaires

  • gallery et formulaires

    Posté par martial sur 29 avril 2025 at 9h29

    Bonjour , bon début de semaine à tous. j’ ai un soucis j ai deux ecran l’un avec une gallery et l’autre avec un formulaire, quand je veux afficher les elements de la gallerie sur le formulaire je n’y parviens pas. j’ai utiliser gallery. selected, ou meme la propriété set quand je clique sur l’element il me renvoit sur l’ecran du formulaire sans y afficher les informations. Que faire?

    merci d’avance pour votre aide.

    R3dKap a répondu 4 weeks, 1 day ago 4 Membres · 9 Réponses
  • 9 Réponses
  • Romane

    Member
    29 avril 2025 at 14h32

    bonjour,

    Il faut en plus ajouter un EditForm(NomDuFormulaire);;

    Et penser à ajouter l’élément Gallery1.Selected ou la variable dans le paramètre Item du formulaire.

    🌞

  • martial

    Member
    29 avril 2025 at 15h12

    merci mais je l’ai éffectué mais sans succès, en cliquant sur l ‘élémént de la galerie je migre vers l’écran du fomulaire sans les informations .

  • Romane

    Member
    29 avril 2025 at 15h16

    Peux tu envoyer des captures de ce que tu as fait ?

    <div>
    <div>Moi si je fais dois avoir un nouveau formulaire je fais ceci :
    <div>
    <div>Navigate('Screen - New Request');; NewForm(Form1_InvestmentRequest);;</div>
    <div> </div>
    <div>Dans le cas ou je veux un formulaire de modification je fais : </div>
    <div>
    <div>
    <div>Navigate(
    'Screen - New Form Second Part';
    Transition.None;
    {v_record: ThisItem}
    );;
    EditForm(Form1_InvestmentRequest_Step2)</div>
    </div>
    </div>
    </div>
    </div>
    </div>

    • This reply was modified 1 month ago by  Romane.
  • R3dKap

    Member
    29 avril 2025 at 21h34

    @Romane a raison sur sa dernière proposition…

    Dans le OnSelect de la galerie tu dois mettre le code suivant :

    Navigate(EcranCible; ScreenTransition.Fade; {locFormMode: FormMode.Edit; locSelectedItem: ThisItem})

    Dans l’écran du formulaire, tu dois définir les propriétés du formulaire ainsi :

    • Item = locSelectedItem
    • DefaultMode = locFormMode

    Dans Power Apps, il est interdit (même s’il est possible de le faire) de référencer des contrôles qui se trouvent sur un écran autre que l’écran en cours. Par exemple : sur ton écran de la galerie, tu n’as pas le droit de faire un EditForm(Form1) car ton formulaire Form1 est sur un autre écran. Tu n’as pas le droit non plus de mettre un Gallery1.Selected dans la propriété Item de ton formulaire car ta galerie et ton formulaire ne sont pas sur le même écran.

    La bonne pratique est celle que je donne ci-dessus… 😉

    Si ça ne marche pas, montre-nous une capture de l’erreur…

  • martial

    Member
    30 avril 2025 at 9h51

    merci, il est fonctionnel 100%.

  • Romane

    Member
    30 avril 2025 at 12h04

    Oh wow,

    Je ne savais pas qu’on avait pas le droit pour le EditForm ! Merci pour le conseil 🙂

  • R3dKap

    Member
    30 avril 2025 at 21h30

    En fait, c’est pas forcément très grave de faire un EditForm() sur un formulaire qui est sur un autre écran si on est certain de naviguer juste derrière vers cet écran.

    En réalité, il n’est pas recommandé (mais encore une fois, pas impossible) de faire des références entre écrans. Mais depuis quelques années Power Apps optimise les perfs des applications en n’instanciant les écrans que lorsque l’on navigue dessus OU lorsqu’un contrôle ailleurs dans l’application fait référence à l’un des contrôles qui s’y trouve. Donc, la bonne pratique veut qu’on ne fasse pas de références entre écrans pour éviter de forcer le chargement d’écrans qui ne sont potentiellement pas visités et donc chargés pour rien.

    Par contre, faire du NewForm(), EditForm() ou ViewForm() sur un écran où tu as en même temps la galerie des éléments et le formulaire qui permet de travailler sur un élément, là ça a du sens puisqu’on est sur le même écran… 😉

  • Alexandre

    Member
    1 mai 2025 at 15h16

    Pour préciser ce n’est pas recommandé car ca contraint powerapps de maintenir en mémoire les écrans qui portent les contrôles lu par d’autres écrans. Donc plus tu fais ca plus tu réduits les perfs. Sans compter que c’est toujours une mauvaise pratique de créer des dépendances entre les choses. Il faut réduire le couplage au maximum et donc le mieux d’après moi est de faire comme Redkap a dit, de passer des paramètres entre les écrans.

    Et pour la manière dont powerapps optimise les chargements, j’ai constaté il y a quelques semaines lors d’une analyse intensive des chargements de mon apps pour débugger un PCF, que powerapps anticipait les chargements des contrôles sur les écrans ciblés par des navigates. En gros, si dès le premier écran powerapps constate qu’il y a un bouton avec un navigate, sans même que l’utilisateur ne clic sur le bouton, powerapps commence le préchargement des contrôles pour accélérer la navigation.

  • R3dKap

    Member
    2 mai 2025 at 10h52

    Intéressant le coup du préchargement lorsqu’il y a un Navigate() sur un écran. Mais je sais pas pourquoi, je m’en doutais un peu… 😅

Connectez-vous pour répondre.