2017-04-06 1 views
0

Mon application contient une liste de produits transportés par une chaîne de magasins de vente au détail. Je souhaite que le responsable de chaque magasin puisse sélectionner son numéro de magasin sur la page d'accueil, puis voir la liste des produits dans son magasin.Filtrez la galerie en fonction de la sélection de la liste déroulante Screen1, puis activez la recherche

Sur Screen1 j'ai dropdown1, qui liste les numéros de magasin et puis Button1 qui doit être pressé pour naviguer à BrowseGallery1, filtré par le numéro de magasin sélectionné dans la liste déroulante.

Ma source de données est un CDS appelé Produits. Il y a un champ de texte appelé StoreNum qui a le nombre de magasins, tels que "111", "115", etc.

J'ai essayé de mettre ce qui suit dans le OnSelect de Button1:

Navigate(BrowseScreen1,ScreenTransition.Fade,{StoreNum: 
Dropdown1.Selected.Value}), but that didn't work. It navigates to the 
page, but doesn't filter by StoreNum. 

Après je figure En dehors de la situation de filtre, je veux que le champ de recherche sur BrowseScreen1 pour rechercher quelques champs dans la galerie, mais seulement pour ce magasin particulier. J'ai actuellement cela dans la section « Articles » de BrowseGallery1:

Sort(If(IsBlank(TextSearchBox1.Text), Products, Filter(Products, TextSearchBox1.Text in Text(ItemNameWeight))), ItemNameWeight, Ascending) 

Cela semble rechercher mon champ ItemNameWeight ok, mais sans égard au numéro de magasin.

J'apprécierais de l'aide!

Merci, Tony

Répondre

0

Lorsque vous passez une variable à un écran dans l'option Naviguer, que tout ce qu'il fait, il crée simplement une variable dans cet écran pour vous d'utiliser, et vous ne l'utilisez pas l'écran de navigation.

d'abord Renommons la variable de sorte qu'il ne soit pas incompatible avec le nom de la colonne:

Navigate(BrowseScreen1,ScreenTransition.Fade,{SelectedStore: Dropdown1.Selected.Value}) 

Maintenant, permet de mettre à jour la fonction dans la propriété Items pour votre galerie il filtre par StoreNum, comme ceci:

Sort(Filter(If(IsBlank(TextSearchBox1.Text), Products, Filter(Products, TextSearchBox1.Text in Text(ItemNameWeight))), SelectedStore = StoreNum), ItemNameWeight, Ascending) 

Cela devrait filtrer tous les magasins avec le bon numéro, puis filtrer par les produits dans la boîte de recherche.

Si vous souhaitez rechercher d'autres champs dans la base de données, vous pouvez ajouter d'autres commandes de filtrage. Cependant, je recommanderais d'ajouter un nouvel écran pour chaque type de recherche, car cela simplifierait la fonction Articles de votre galerie.

Cheers.

+0

Tout d'abord merci un million. Votre suggestion fonctionne, MAIS mon problème est que ce n'est que filtrer à travers les dossiers qu'il tire vers le bas. (500) Donc le résultat est que si je filtre le magasin 111, la galerie est vide, mais si je filtre le magasin 218, qui se trouve être le premier magasin dans les données, alors cela fonctionne comme prévu. Existe-t-il un moyen de contourner cela sans créer de CDS distinct pour les 29 magasins? –

+0

Je me rends compte maintenant que même si j'avais 29 CDS séparés, je ne faisais que chercher les 500 premiers enregistrements. Cela ne marchera pas pour moi du tout. Chaque magasin a des milliers de produits. J'espère qu'il y a un travail autour. –