Checkbox et galerie

  • Checkbox et galerie

    Posté par Mickael sur 25 septembre 2024 à 13h18

    Hello rescue team,

    J’espère que tout le monde va bien.

    Je colle sur un nouveau sujet, concernant des checkbox dans une galerie.

    L’utilisateur ne peut sélectionner qu’un seul choix dans cette galerie en cochant une checkbox (Jusqu’ici tout va bien)

    Mon problème vient du fait de ne pouvoir sélectionner qu’un seul “item” dans cette galerie, j’ai donc opté pour cela :

    Checkbox.Default : Variable = ThisItem.Title

    Checkbox.DisplayMode : If(Variable = ThisItem.Title, DisplayMode.View, DisplayMode.Edit)

    Checkbox.OnCheck : Set(Variable, ThisItem.Title)

    Cela me permet donc de décocher automatiquement une potentielle autre checkbox qui aurait été cochée.

    En revanche, là où est mon problème c’est que je souhaite décocher la Checkbox une fois que l’on quitte l’écran via un bouton retour ou en soumettant une demande, qui ne passe pas par un formulaire (Form) mais plutôt par un Patch d’informations contenues dans une autre galerie ainsi que quelques divers contrôles isolés.

    J’imagine que cela vient de mon Checkbox.Default, sauf que je n’ai pas le choix si je veux qu’une seule checkbox puiisse être cochée, et je ne trouve pas de solution.

    Comme toujours, vous êtes ma dernière chance.

    Merci.

    Mickael a répondu Il y a 2 mois 2 Membres · 3 Réponses
  • 3 Réponses
  • Mickael

    Membre
    25 septembre 2024 à 14h06

    Je viens de tenter d’éditer mon propre sujet mais j’ai l’impression que ça n’a pas fonctionné.

    En gros je disais que juste après avoir soumis mon poste, la lumière m’était venue et que j’avais trouvé une solution.

    Du coup désolé si vous avez commencé à chercher de votre côté une réponse pour mon problème.

    Je passe donc par un labal texte extérieur à la galerie, afin de compter le nombre d’item pour lesquels la checkbox est cochée :

    <div>
    <div>LabelText.Text :</div>
    <div>CountRows(Filter(Galerie.AllItems, Checkbox1.Value))</div>
    <div> </div>
    <div>Checkbox.DisplayMode :
    <div>
    <div>If(Self.Value || (Value(lbl_CountGal_Services.Text) = 0), DisplayMode.Edit, DisplayMode.Disabled)</div>
    <div> </div>
    <div>Ce qui me libère donc mon .Default de la checkbox.</div>
    <div>Checkbox.Default : false</div>
    <div> </div>
    <div>Checkbox.Oncheck :
    <div>
    <div>UpdateContext({ResetCheckbox: true})</div>
    </div>
    </div>
    <div> </div>
    <div>Checkbox.Reset : ResetCheckbox</div>
    <div> </div>
    <div>Il ne reste plus qu’à ajouter un UpdateContext({ResetCheckbox: true}) dans mon bouton pour sortir de l’écran ou celui pour soumettre une demande.</div>
    <div> </div>
    <div>Voilà, encore désolé si vous avez commencé à regarder de votre côté.</div>
    <div>Merci encore.</div>
    </div>
    </div>
    <div> </div>
    </div>

    • Cette réponse a été modifiée Il y a 2 mois, 1 semaine par  Mickael.
  • DavidZed

    Membre
    30 septembre 2024 à 6h24

    Hello,

    Dans ce genre de cas, si je n’ai pas besoin de l’item sélectionné en dehors de l’écran, je passe par une variable de contexte,

    • Je compare sur l’ID pour être sur qu’il n’y ait pas d’erreur liée à un doublon
    • Je stocke l’enregistrement complet dans la variable pour pouvoir l’utiliser dans un patch par exemple

    Sur la checkbox :

    Checkbox.Default : Variable.ID = ThisItem.ID

    Checkbox.DisplayMode : If(Variable.ID = ThisItem.ID, DisplayMode.View, DisplayMode.Edit)

    Checkbox.OnCheck : UpdateContext({Variable, ThisItem)

    CheckBox.Reset : IsBlank(Variable)

    Pour gérer le décochage, je rajoute :

    Après le Patch et sur le Ecran.OnHiden : UpdateContext({Variable : Blank()})

  • Mickael

    Membre
    30 septembre 2024 à 15h48

    Merci DavidZed.

    Si on part du principe où j’ai 2 checkbox sur chaque item de ma galerie, comment procèderais tu?

    Par exemple, si je veux laisser la possibilité à l’utilisateur de sélectionner une CB “oui” et une CB “non”, comment faire pour avoir le même mécanisme? C’est à dire de pouvoir désactiver une CB quand l’autre est cochée?

Connectez-vous pour répondre.