Im having trouble sorting out a filter need on a gallery in powerapps.
I would like to display only items created by the user. To do this i do the following.
Gallery item: Filter('ListName', Author.Email=CurrentUser)
The above works fine.
Now i have a Text input where i would like users to search the items they have created.
I can do that with the following.
SortByColumns(Filter('ListName', StartsWith(Title, TextInput.Text)), "Title")
The above sorts all items.
How can i combine both?
I want the user to only see the items they have created and i want them to be able to use the text box to search there items using the title.
Assuming the users only ever see their own items, you could create a collection in either App.OnStart or screen OnVisible that filters the data source 'ListName' for the users items. Then use this collection for the Items of your gallery.
App.OnStart = ClearCollect( colUserItems, Filter('ListName', Author.Email=CurrentUser) )
Gallery.Items = colUserItems
Looks like i can use the following.
Filter('ListName', Author.Email=CurrentUser || SearchCourses.Text in Title)
I do get a delegation warning so i wonder if there is a better way to do this?
@Eelman Thank you for answering.
Im trying to have a searchbox that can search the gallery to and display only current users items. If search is empty ti shows the user a list of all there items then they can use search to to find more specific items in there own list
@JimmyWork if this code works use it. You can mostly ignore the delegation warnings if your data sources are pretty small (<2000 records)
Hi @JimmyWork ,
Do you want to combine the two filter condition that you mentioned?
Currently, the 'in' operator could not be delegated within SP connector, please check the following article:
Please consider modify your formula as below:
SortByColumns( Filter( 'ListName', Author.Email = CurrentUser, StartsWith(Title, TextInput.Text) ), "Title" )
Note: I assume that the CurrentUser store the email address of the current login user.
SortByColumns( Filter( 'ListName', Author.Email = CurrentUser, If( IsBlank(TextSearchBox1.Text), true, StartsWith(Title, TextInput.Text) ) ), "Title" )
If the amount of your SP List records is not more than 2000, you could ignore the Delegation warning issue within your formula (using 'in' operator). If the amount of your SP List records is more than 2000, you could consider bulk-load your SP list records into your app as Collection. Then use the collection as data source in your app.
Please check and see if the alternative solution I mentioned below could help in your scenario: