I have a search box connected to Gallery data source. I have included a RESET button to remove text from the searchbox in order to perform new search. When the RESET is pressed twice it hides the data within the gallery and I cant see the data unless I close the app. (If RESET is pressed once, it removes the text written in the searchbox but doesn't hide the data in the gallery) The issue is when you press the RESET twice the data cannot be seen in the gallery.
Below screenshots shows when RESET is pressed twice.
When I remove the text by using backspace from the searchbox the data in the gallery shows.
Can someone help?
Solved! Go to Solution.
What was your filter formula before?
The current formula you took from us was more of an example than a "use this". If you want searching, then you need to specify that in the formula...
This formula will only show results if the name is complete - not partial:
Filter(ContactList_1,
(IsBlank(MySearchTextBox.Text) || Name = TextInputSearch_2.Text)
)
This formula will show results if the name startswith what is typed:
Filter(ContactList_1,
(IsBlank(MySearchTextBox.Text) || StartsWith(Name, TextInputSearch_2.Text))
)
This formula will search anything that matches (NOTE: This is non-delegable):
Search(ContactList_1,
TextInputSearch_2.Text, "Name"
)
Happy to help!
@poweractivate thanks for chiming in too! 🙂
Can you provide some of the formulas you are using to do this?
@rehankazi Check if under the Gallery Items property you have ANY occurrences of Filter, Search or similar function,
Then wrap the function like this:
If(IsBlank(MySearchTextBox.Text),PutSomeDefaultFiltersHere,Filter(MyDataSource, MyColumn = MySearchTextBox.Text))
Pay attention to where you have anything like Filter(MyDataSource, MyColumn = MySearchTextBox.Text). Try to make it so that there is an IsBlank which diverts the logic to a branch that doesn't have Filter(MyDataSource, MyColumn = MySearchTextBox.Text) anywhere in it i.e. some default filters or even just showing ALL the items, e.g.
If(IsBlank(MySearchTextBox.Text),MyDataSource,Filter(MyDataSource, MyColumn = MySearchTextBox.Text))
Check if something like the above adjustment might help you.
To summarize the above approach, essentially, it is
1. The problem might be that when the control is blank, a Filter function inside the Items property of the Gallery is trying to filter on the column being Blank() instead of the column containing anything. So for example, Filter(MyDataSource, MyColumn = MySearchTextBox.Text) is being interpreted as Filter(MyDataSource, MyColumn = Blank()) which could sometimes cause no results to be shown.
2. To remedy this, an If function can be wrapped in the Items property and check for IsBlank on the Control of Text Input - if it is Blank, do something as simple as just showing all the Items without ANY filters e.g. just everything in the Data Source, for example. (or, once showing all items were tried, but showing only some items is desired even when the search box is blank, just put some well-tested default filters that cause at least some data to be shown).
3. The above is a general approach. The formulas are not meant to be literal. If your Filter has StartsWith rather than = (equals) in Items property of the Gallery, even so the same may still apply and you still may want to check the above in case it is the issue in your case.
See if it helps.
In general, specifying multiple datasources in an Items property with an If statement is a bad practice. This causes the formula to be less manageable as it might grow larger and also introduces the potential of different schema results from each If branch.
The formula you are trying to describe is better written as:
Filter(MyDataSource,
(IsBlank(MySearchTextBox.Text) || MyColumn = MySearchTextBox.Text)
)
This shows all records when the search is empty.
This shows no records when search is empty:
Filter(MyDataSource,
MyColumn = MySearchTextBox.Text
)
The Default of the TextInput should be blank and the Reset property of the TextBox should be resetButton.Pressed
@RandyHayes I agree, it would be better to write the formula like the way you are doing. I suppose I am also taking a guess of a possible problem, maybe the OP is having another kind of problem. However if the OP is having that problem, I agree with you that putting the IsBlank check inside the Filter like you are doing rather than having the Datasource specified twice putting it on the outside would be a better way to do it actually.
Yeah, there is something fishy about the click twice and have to restart the app issue.
As for the combined filter - yes, it's best to be in that practice as some Filters get quite large with conditions and duplicating that in each branch of If's is a nightmare 😉
@poweractivate @RandyHayes Thank you. The formula suggested is to be entered on the RESET button? i.e onSelect? It is not working, the RESET function does not work either.
No the filter formula is to be on your Gallery Items property.
There should be nothing in the OnSelect action of the button.
The Reset property of your search textinput control should be : yourButtonName.Pressed
@rehankazi As a troubleshooting step, even if my way is, I agree with @RandyHayes not ideal way to write it, I am not sure the way I had it may have had slightly different meaning. Can you try it the way I said in Items property of Gallery:
If(IsBlank(MySearchTextBox.Text),MyDataSource,Filter(MyDataSource, MyColumn = MySearchTextBox.Text))
Even if mine works, I would immediately try to rewrite it the way @RandyHayes suggested as it is better than the one I gave even in my opinion, if that works too then you should rewrite it.
And actually this formula should go in Items property of Gallery for Filter - not in OnSelect.
In your case it didn't work not because it was @RandyHayes version but because you put it in OnSelect - my version won't work either in OnSelect it only works in the correct place, the Items property of Gallery
@rehankazi I thought about it more and I believe @RandyHayes version will have same result as mine, but the version from @RandyHayes is also the version I prefer, I think it is better as well. Yours did not work because you didn't place it in Items property of Gallery. Please try put @RandyHayes version inside Gallery Items property then it will work.
User | Count |
---|---|
256 | |
103 | |
92 | |
47 | |
37 |