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:
- 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!
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:
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.
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})
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})