Search/ filter of a repeater list does not work

Hi,

I try to do a search/ filter function for my repeater list, but it does not work. Always when searching for a term, the result is “0” (nothing), so the list is empty. Can somebody help, what I did wrong?

Thanks,
Max

51

Hey Maxosh,

For the rule, try [[item.Element == This.text]] instead of what you have there now. I did a quick test and that seemed to work for me.

-Jason

Thanks Jason,

did so, but it does still not work. The repeater is still blank (nothing is displayed) :frowning:

best,
Max

Are you able to post your Axure file?

@JP7
I was wrong, it works! :wink: But now I have to type in the exact and complete text to filter. I wanted to just have a part of the text as the search phrase, like:
type to filter: “Comb” and as a result the element “Combobox” will be displayed.

Is that possible?

here the rp file: searchandfilterquestion.rp (87.1 KB)

Best,
Max

It sounds like you’re looking for predictive search functionality, which I have yet to learn. I’m sure if you did a search here on the forums for “predictive search” you would probably find something that may help you.

Hi Jason,

is this predictive search I’m looking for? For me the search is like:
“show me all elements that contain the phrase which is typed in the textfield”

its possible to create with rules, but not with the filter operations, or?

Best,
Max

Yes, that does sound like predictive search but I’m honestly not sure how it’s done. Sorry I can’t be of more help to you.

@JP7 thanks a lot for your help so far!

Have a nice day!
Max

If you have Axure 9, there’s a library for “Sample UI Patterns”. There’s an example of predictive search there.
image

2 Likes

@huban absolutely amazing tipp! Thanks a lot for this, you made my day!

Best,
Max

For reference, if you want to do a search that matches partial strings and ignores case, you need to string together several items.

Say you have a table with a name column and an address column. You could put a text field at the top of the page, then add a Key Up interaction to the field. On key up, the field would check if it has anything in it. If it does, it can apply a filter to the table. The filter would look like this:

[[Item.Name.toLowerCase().indexOf(EnteredText.toLowerCase())>=0 || Item.Address.toLowerCase().indexOf(EnteredText.toLowerCase())>=0]]

In this case Item.Name is the name column and Item.Address is the address column. The .toLowerCase() part takes whatever is in those columns and converts them to lower case. The .indexOf part is what does the matching - that says ‘if this exists, even partially, match it’. EnteredText would be a local variable on the text field that checks what text has been entered, and the .toLowerCase also converts that to lowercase so that it can be compared with the name and address columns. The >=0 part says, basically, ‘any occurrence more than zero’. Finally, the double pipe ( || ) is an ‘OR’ that allows you to chain together multiple items.

So the whole thing says ‘if anything in this text field matches either the name or the address column (or both) then show it’.

2 Likes