Répondre à: interdire la sélection d'un item de gallerie

  • R3dKap

    Membre
    17 mai 2023 à 7h53

    Ok, nickel. Alors, l’utilisation de la collection sur ta galerie c’est uniquement si tu es certains de pouvoir toujours limiter la quantité d’éléments rapatriés de ta liste SharePoint à moins de 2000 éléments, car Power Apps ne pourra pas aller au-delà. Dans le cas contraire je te suggère de brancher ta galerie directement sur ta liste SharePoint.

    Du coup, voilà ce que je te propose de faire :

    1. Dans la galerie tu rajoutes un icône (n’importe lequel, j’utilise souvent le “+”) avec X=0, Y=0, Width=Parent.TemplateWidth, Height=Parent.TemplateHeight et tu lui mets une couleur transparente partout pour qu’on ne voie jamais le “+” ni au survol ni au clic. L’avantage d’utiliser un icône c’est que l’on voie une main au survol lorsqu’il est cliquable (DisplayMode = Edit) et une flèche lorsqu’il n’est pas cliquable (DisplayMode = Disabled).

    2. Assure-toi que ton icône poubelle rouge soit bien placé au-dessus de cet icône “+”

    3. Met la formule suivante dans la propriété DisplayMode de cet icône “+” : If(ElecValue = 100 || ElecValue = 200; DisplayMode.Disabled; DisplayMode.Edit). Je te laisse remplacer ElecValue par la colonne de ta source de données qui contient cette info bien sûr 😉

    4. Dans la propriété OnSelect de cet icône “+” met ceci : UpdateContext({locSelectedItem: ThisItem}) -> On définit l’élément en cours dans une variable locale

    5. Supprime tout ce qu’il y a dans la propriété OnSelect de ta galerie (on en plus besoin, c’est l’icône “+” qui pilote la sélection)

    6. Ah, je te propose aussi de mettre ceci dans la propriété DisabledFill de l’icône “+” : If(Self.DisplayMode = DisplayMode.Disabled; RGBA(0;0;0;0,1). Comme ça, l’utilisateur identifiera tout de suite les éléments sur lesquels il ne pourra pas cliquer).

    7. A ta place j’enlèverai même l’icône “>” qui n’a pas trop de sens ici vu qu’on ne navigue pas vers un autre écran (on l’utilise plutôt lorsque l’on va vers un autre écran et que l’on utilise une transition d’écran qui glisse de la droite vers la gauche par ex.)

    8. Supprime le bouton MODIFIER

    9. Supprime tous tes champs

    10. Supprime ton bouton SAUVEGARDE FINALE

    11. Déplace ton icône de sortie plutôt en haut à droite de l’écran à côté du logo car là il est trop près du bouton de sauvegarde (disquette) -> pas recommandé en terme d’UX/UI 😉

    12. A l’intérieur du cadre bleu rajoute un contrôle formulaire Form1 et tu mets les champs nécessaires

    13. Dans Form1.Datasource tu mets directement ta liste SharePoint

    14. Dans Form1.Item tu mets locSelectedItem

    15. Sur le OnSelect de ton bouton de sauvegarde (disquette) tu mets juste : SubmitForm(Form1)

    16. Dans Form1.OnSuccess tu mets : Notify("Votre commentaire a été enregistré avec succès; NotificationType.Success; 4000);; UpdateContext({locSelectedItem: Blank()})

    17. Modifie la propriété OnSelect de l’icône “+” ajouté dans la galerie : UpdateContext({locSelectedItem: ThisItem});; EditForm(Form1)

    18. Sur le OnSelect du bouton NOUVELLE SAISIE met ceci : NewForm(Form1)

    19. Sur le Visible de ton cadre bleu : Not(IsBlank(locSelectedItem)) || Form1.Mode = FormMode.New -> le cadre bleu avec le formulaire et le bouton d’enregistrement est visible si on a cliqué sur un élément (il y a une valeur dans locSelectedItem) ou si on a cliqué sur NOUVELLE SAISIE et que donc le mode du formulaire est New.

    20. Du coup, sur le OnVisible de ton écran il faut que tu mettes : EditForm(Form1) pour que par défaut ton cadre bleu ne s’affiche pas.

    Voilà je pense qu’on a fait le tour. Et à ta place je brancherais direct ma galerie sur la liste SharePoint et je laisserais tomber la collection. Ca complexifie les choses et pour l’instant tentons déjà de le faire marche en direct. On pourra voir plus tard pour optimiser les perfs mais à mon avis déjà comme ça ça devrait rouler…

    Hésite pas si t’as des questions…

    CommentID=Lvf4ogsqiFhjkzZ, PostID=y6FfHKyETCODL84