
Affichage par défaut du formulaire "General Info
Étiquetté : DataCard, formulaire, power apps
Affichage par défaut du formulaire "General Info
Posté par Philippe CULOT sur 27 décembre 2021 à 18h49Bonjour,
Je souhaiterai que l’utilisateur arrive systématiquement sur l’onglet “General Info” lorsque je clique sur 1 élément de ma galerie ou bien sur l’icone ajout (matérialisée par l’icône +) .
Merci de votre aide
Formulaire avec les onglets
Mes onglets sont faits à partir d’une galerie dans laquelle j’ai inséré une étiquette
Propriété items de la galerie
[{ID:”General”; DisplayName:”General Info”}; {ID:”Address”; DisplayName:”Address”}; {ID:”Billing”; DisplayName:”Billing Address”};]
Merci de votre aide et Bonne fêtes de fin d’année
PostID=kLkKFu8Wo9AciTP
Philippe CULOT a répondu Il y a 1 année, 4 mois 1 Membre · 10 Réponses- 10 Réponses
Bonjour,
Ce que je fais habituellement dans ce genre de situation, c’est que premièrement, mes onglets ne sont pas ajoutés directement dans la propriété Items de la gallerie, mais plutot dans une collection :
App.OnStart : ClearCollect(colFormTabs;{ID:"General"; DisplayName:"General Info"}; {ID:"Address"; DisplayName:"Address"}; {ID:"Billing"; DisplayName:"Billing Address"})n
Puis dans mon formulaire, au clique sur un élément de la gallerie, je fais un
UpdateContext({locSelectedTab:ThisItem})n
De cette facon je connais l’onglet sélectionné et je peux adapter mon formulaire en fonction (afficher masquer des datacards en fonction du locSelectedTab.ID.
Donc ce que vous pouvez faire c’est lorsqu’un élément est cliqué sur votre gallerie de votre 1er écran :
Navigate('Ecran Formulaire';Transition.None,{locSelectedTab:LookUp(colFormTabs;ID="General")})n
Et par habitude j’ajoute également une sorte de reset lorsqu’on quitte le formulaire
'Ecran Formulaire'.OnHidden : UpdateContext({locSelectedTab:LookUp(colFormTabs;ID="General")})n
Theo
CommentID=Oz6jpNTLHRwPHyB, PostID=kLkKFu8Wo9AciTP
@Theophile CHIN-NIN , Merci pour ces éléments
SubCommentID=xA7iWajFRFRbXZx, CommentID=Oz6jpNTLHRwPHyB, PostID=kLkKFu8Wo9AciTP
Bonjour,
@Theophile CHIN-NIN , ce que je comprends un seul formulaire est nécessaire pour naviguer entre les onglets, et chaque datacard est visible en fonction de l’ID (General,Address,Billing).
Dans l’exemple que j’ai posté, je me suis inspiré d’un tuto ou par chaque onglet un formulaire était réalisé et qui prenait les datacards nécessaires.
Dans ta solution :
- Peux tu me confirmer qu’un seul formulaire est nécessaire
- Peux tu m’indiquer ou dois je placer la formule ci dessous
UpdateContext({locSelectedTab:ThisItem})n
CommentID=vace1lWc7bEGDcP, PostID=kLkKFu8Wo9AciTP
Oui moi je préfère 1 seul formulaire, car de cette façon tu as 1 seul “SubmitForm()”. Si tu joues avec plusieurs formulaires, tu vas soit galérer à merger tes modifications pour soumettre 1 seul form, soit tu vas create/update plusieurs fois ton élément, ce qui n’est vraiment pas optimal.
UpdateContext({locSelectedTab:ThisItem})n
Se positionne au clique sur un des onglets. Donc dans la gallery des onglets moi je met un bouton appelé btnTab, et sur btnTab.OnSelect, j’update ma variable locSelectedTab. De cette facon dès que tu cliques sur un onglet, tu as dans une variable l’onglet sur lequel tu es.
Et dans ma collection de tab, je met un tableau avec les datacards à afficher (les noms techniques de colonnes que je veux afficher pour l’onglet) :
App.OnStart : nClearCollect(n colFormTabs;n {ID:"General"; DisplayName:"General Info";Tabs:["Title","Colonne1"]};n {ID:"Address"; DisplayName:"Address";Tabs:["Colonne2","Colonne3"]};n {ID:"Billing"; DisplayName:"Billing Address";Tabs:["Colonne4","Colonne5"]}n )n
De cette façon, dans mes datacards de mon formulaire, je peux mettre une formule générique sur le OnVisible :
DataCard.Visible : Self.DataField in locSelectedTab.Tabsn
Cela veut dire : Si le datafield (=le nom technique de la colonne attachée à la datacard du formulaire) est dans le tableau “Tabs” de l’onglet sélectionné, alors afficher la datacard.
Théo
SubCommentID=FWlctkUQ6bQyRKA, CommentID=vace1lWc7bEGDcP, PostID=kLkKFu8Wo9AciTP
@Theophile CHIN-NIN ,merci de ce complément d’explications, je vais tester sur mon exemple
SubCommentID=5x82qlUoJ4smiqM, CommentID=vace1lWc7bEGDcP, PostID=kLkKFu8Wo9AciTP
SubCommentID=5gj20lExBNLN9HV, CommentID=vace1lWc7bEGDcP, PostID=kLkKFu8Wo9AciTP
Bonjour @Theophile CHIN-NIN
Tout d’abord Bonne et heureuse Année 2022.
J’ai mis en oeuvre tes recommandations et cela fonctionne bien, lorsque je change d’enregistrement ou j’ajoute un nouvel enregistrement j’arrive bien sur le formulaire Général Info mais le btnTab (qui pour moi est un label) reste grisé alors qu’il devrait être en bleu clair (pour signifier que c’est cet onglet qui est sélectionné). En fait le btnTab reste sur le dernier clic que j’ai réalisé, merci d’avance pour ton aide.
CommentID=ZBnhI6BBFyWyjJS, PostID=kLkKFu8Wo9AciTP
Bonjour @CULOT
Meilleurs voeux également 🙂
En général moi j’utilise un bouton avec un displayMode.Disabled pour l’onglet sélectionné, et displayMode.Edit pour les onglets non-sélectionnés (pour jouer sur la “cliquabilité” de l’onglet), et je change les couleurs, surtout pour le Disabled pour ne pas qu’il soit grisé, mais plutot mi en avant.
Donc sur le bouton dans ma gallerie (btnTab) je fais un
btnTab.DisplayMode : If(locSelectedTab.ID = ThisItem.ID, DisplayMode.Disabled, DisplayMode.Edit)n
De cette facon, le bouton (=l’onglet) est désactivé si on est actuellement sur cet onglet, et activé pour naviguer vers un autre onglet.
Théo
SubCommentID=Wfcpwo14blsZNSj, CommentID=ZBnhI6BBFyWyjJS, PostID=kLkKFu8Wo9AciTP
@Theophile CHIN-NIN ,Merci pour ce complément, j’ai appliqué ta recommandation et ai modifié les couleurs , cela est parfait.
SubCommentID=kyy1M0V302g17I5, CommentID=ZBnhI6BBFyWyjJS, PostID=kLkKFu8Wo9AciTP
bonjour
@Theophile , je reviens vers toi pour un probleme sur lequel je bute, j’ai un datacard qui est répeté sur tous les onglets alors que bien défini dans le tabs “Juridique” (champ “scDoumentsJuridique”) . Datacard Documents cadre juridique
Merci pour l’aide à venir
CommentID=lKlDVjvqU4rm6tP, PostID=kLkKFu8Wo9AciTP
Connectez-vous pour répondre.