i'd like to filter a gallery using a dropdown
the problem is that the dropdown value is not a value i want to search, but is the operator
dropdown vaue: =
search textbox: 35
so i have selected the "= 35", but in the dropdown i have more than, less then....
how can i make a filter formula with that?
Solved! Go to Solution.
This should definitly work. So there must be a problem elsewhere. I'm trying to think where it could be...
Can you post a capture of the field 'Ptf trasferibile personale' definition in the list ?
Do you want to filter you gallery on the numeric values I point out here with my red arrows?
Can you post a capture of an example of your filter screen where I can see the values you enter in the TBcandidatifiltroptftrasferibile text box?
Can you post a capture of the list items in SharePoint that should be returned with the corresponding filter value?
Thanks a lot for your patience,
You could use an If() or Switch() function in your Gallery Item property and have a Filter formula for each situation.
An example of a switch():
Switch(DropDpwn.Value, "=", Filter('DataSource', SearchBox.Text = DataSourceColumn), ">", Filter('DataSource', SearchBox.Text > DataSourceColumn), "<", Filter('DataSource', SearchBox.Text < DataSourceColumn), 'DataSource')
sorry to ask again about it, but i have several filters. look at that formula, it returns nothing
Filter(Candidati;StartsWith(Cognome;TBcercacandidato.Text)&&If(IsBlank(TBcandidatifiltroptftrasferibile);true;Switch(DPcandidatifiltroptftrasferibile;">=";'Ptf trasferibile personale' >= TBcandidatifiltroptftrasferibile.Text;"<=";'Ptf trasferibile personale' <= TBcandidatifiltroptftrasferibile.Text;"=";'Ptf trasferibile personale' = TBcandidatifiltroptftrasferibile.Text)))
i have a lot of fields i have to filter with switch, they are value that i want to search, i need it to know if more than, less than and equals
just another question
Filter(Candidati;CityID in CBsearchcity.SelectedItems.IDcity)
it shows a delegation error, and i do not get every values...
how may i substitute "in" operator?
Hi @diegomarino ,
Could you please share a bit more about your scenario?
Do you list the opetaors within the Dropdown box, and want to concatenate with Text Search box value?
Based on the needs that you mentioned, I afraid that there is no direct way to achieve your needs. Currently, within PowerApps, the operator string value (e.g. '=', '>=', ...) could not be acted as actual operator within the Filter formula.
As an alternative solution, I think the If function could achieve your needs. I have made a test on my side, please take a try with the following workaround:
Set the Items property of the Gallery to following formula:
Filter( 'YourDataSource', If( Dropdown1.Selected.Value = "=", FilteredColumn = Value(TextSearchBox1.Text), Dropdown1.Selected.Value = ">", FilteredColumn > Value(TextSearchBox1.Text), Dropdown1.Selected.Value = "<", FilteredColumn < Value(TextSearchBox1.Text), Dropdown1.Selected.Value = ">=", FilteredColumn >= Value(TextSearchBox1.Text), Dropdown1.Selected.Value = "<=", FilteredColumn >= Value(TextSearchBox1.Text) ) )
Note: The FilteredColumn represents the column in your data source, which you want to compare with the Text Search box value along with the operator selected in the Dropdown box.
i have this fields i'd like to filter
1) portfolio (it's a currency or numer value). filter more or less or equals
2) new portfolio (the same of the first, it's just another similar but different value)
3) surname. filter with start with
4) date of last work change (it's a date). I'd like to filter before/after
5) city. I store an ID related to the table "cities". i filtered with "field = comboboxSearchCity" but id' like to filter more than 1 value, is it possible? as i said "in" operator is not "delegation friendly"
6) company. as city is an ID related to another table called companies
there are other fields but they are similar to the mentioned before, so no need to work on it now..
As you can see on this capture, I have an app with both search text and many filters to narrow down my research in a list:
And the corresponding code might look complex:
But it IS possible
What I can suggest you to do is to proceed step by step. Start first with your filter on your portfolio field and write something like this (as @v-xida-msft suggested):
(DropDown1.Selected.Value="=" && Portfolio = <VALUE>) || (DropDown1.Selected.Value="<" && Portfolio < <VALUE>) || (DropDown1.Selected.Value=">" && Portfolio > <VALUE>) || etc.
Replace <VALUE> with the corresponding text value or with a Value(<VALUE>) if you're comparing a numeric value.
Then, once tested and once it works, proceed with the second field to filter on, then the third, etc. Just keep in mind to use only delegable operators:
About the IN operator, you could use it but not directly on a datasource. You could first load your datasource in a local collection and use the IN operator on that collection.
Also consider using a collection to store the results of your various filters it becomes more and more restrictive as the user chooses more and more filter options.
hi, it seems promising i tried Filter(Candidati;If(IsBlank(TBcandidatifiltroptftrasferibile.Text);true;DPcandidatifiltroptftrasferibile.Selected.Value="=" && 'Ptf trasferibile personale' = Value(TBcandidatifiltroptftrasferibile.Text)) || (DPcandidatifiltroptftrasferibile.Selected.Value="<=" && 'Ptf trasferibile personale' <= Value(TBcandidatifiltroptftrasferibile.Text)) || (DPcandidatifiltroptftrasferibile.Selected.Value=">=" && 'Ptf trasferibile personale' >= Value(TBcandidatifiltroptftrasferibile.Text)))
but it returns nothing, surely i made something bad
and how my a create a collect? i read something about but not sure
maybe i should create it "on visible" property of the related screen, right? how is the formula?
Could you do 2 things for us please ?