Powerapps: barre de recherche, filtrage et transmission de variables

Le filtrage à partir de la barre de recherche semble ne pas fonctionner. Comment le réparer?

Corriger le filtrage

Lorsque l’on crée les formulaires depuis une liste sharepoint ou « à partir de mes données », l’écran de navigation contient déjà une barre de recherche. Toutefois, celle-ci n’a pas fonctionné pour moi. En fait la formule par défaut contient une référence à une colonne ComplianceAssetId qui n’existe pas dans mes données et qu’il faut modifier:

Powerapps: adapter la barre de recherche
  • Remplacer: SortByColumns(Filter(commandes; StartsWith(ComplianceAssetId; TextSearchBox1.Text)); "ComplianceAssetId"; If(SortDescending1; Descending; Ascending))
  • Par votre colonne:SortByColumns(Filter(commandes; StartsWith(client.Value; TextSearchBox1.Text)); "ComplianceAssetId"; If(SortDescending1; Descending; Ascending))

Je n’ai pas touché ici au second « complianceAssetId », celui qui est entre guillemet… MAis cela fonctionne: désormais, ma liste est bien triée par la bonne colonne, celle du nom de client dans mon cas.

Les variables

Vous pouvez déclarer une variable avec la formule UpdateContext({maVariable:"sa valeur"}). Mais attention, cette valeur n’est pas transmise à un autre écran. Elle ne vaut que pour l’écran où vous l’affectez!

PowerApps: passer une variable dans navigate (court)
Powerapps: passer une variable dans NAvigate (complet)

La fin de la formule, celle que l’aide désigne sous le terme de « contexte » est en fait une transmission de variable entre les deux écrans. La variable myclient reçoit la valeur du nom du client sélectionné, et cette valeur est emportée durant la navigation vers la nouvelle galerie: Navigate(BrowseGallery1; ScreenTransition.None;{myclient: ThisItem.Title})

Filtrer et défiltrer avec la recherche

Comme la navigations entre les écrans peut donner des choses bizarre dès que l’on a plusieurs listes, j’ai choisi de ne pas me limiter à faire référence à l’élément sélectionné dans la galerie de départ pour faire mes filtres.

Au lieu de cela, j’affecte ma variable myclient comme valeur par défaut de ma barre de recherche:

Powerapps: affecter la recherche à une variable

Et je permets à mon utilisateur de la réinitialiser à volonter, pour enlever le filtrage, avec une petite icône en « X ». L’évenement OnSelect reçoit la formule: UpdateContext({myclient: ""}) qui remet à zéro ma variable.

powerapps: annuler et revenir en transmettant la variable
powerapps: effacer la recherche
Bizarrement ici, il me semble que la transmission de variable fonctionne alors que le formulaire est d’abord remis à zéro… Cela m’étonne un peu: ResetForm(EditForm1);;Navigate(BrowseScreen1;ScreenTransition.Fade;{myclient: DataCardValue10.Selected.Value})

powerapps: validation de formulaire et retour en transmettant une variable

Cela fonctionne aussi avec la validation de formulaire où la transmission de variable est incluse dans la navigation: SubmitForm(EditForm1);;Navigate(BrowseScreen1;ScreenTransition.Fade;{myclient: DataCardValue10.Selected.Value})