Choice Component - multiple selections

Hi, thanx for the fast reply!

I am building an app, which is in many ways similar to classified ads - users make their posting and attached certain categories to them (only 1 per post, I guess). Other users search for posts, that fall into one or more categories.

To make things worse, the list of categories is two-level (like “Sports&Outdoor” is the top level, “hiking” is the second level. I figured out, how to make that, using an inline list with a children-parent relation within the sheet of categories.

So I have now a two-level list of categories with checkboxes, where a user can check any number of categories, and this is preserved in a user-specific “Checked” column on the “Categories” sheet. What I need now is a user-specific column in the “Posts” sheet, that will be “true” if any of the checked categories matches with the category of the post.

For other filter criteria, I used the multi-level filter, created by @Robert_Petitto (the one that uses an intermediate single-value column), but it can’t be used for multiple selections.

So your ultimate aim is to have a column that includes all “checked” tags, is that correct?

1 Like

I am not sure. My ultimate aim is to have a filtering criteria. As far as I can understand, it has to be done in several steps:

  1. A user checks the categories he or she would like to search in. In the “Categories” sheet each selected category has “true” in the “checked” user-specific column. (This is done)

  2. In the “Posts” sheet there’s a user-specific column (say, “Search categories”), that contains all categories, that have “checked” = “true”.

  3. In the “Posts” sheet there is a user-specifci “If-Else” column, which has the following conditon: “if the value of the “Category” column matches any of the values in the “Search categories” column, then true.”

I don’t know, how to achieve 2, and I am not sure 3 is possible for multiple values in a cell. So perhaps I am thinking it all wrong.

I think I’ve done something similar to what you’re asking for in this app.

  1. A user-specific column to check a category as true
  2. An auxiliar sheet to save the pair user - category Id
    image
  3. A column in the profile sheet with a formula to join the list checked by each user (may be, this could be done inside Glide editor with a relation and a join column)
  4. A column in the posts sheet with an if-then-else to show only items which category is included in the previous column
    image
1 Like

Looks great, thank you! But I can’t figure out, what do you need step 2 for?

1 Like

As I mentioned, 2 and 3 may be done with a relation and a join column. I use step 2 because I need that student’s parents can access to the rows each student has checked, which wouldn’t be visibles to them because of the user specific column.

1 Like

Can this not be done with a Checklist style to the Inline List?

Yes, this is how I am doing it on step 1

1 Like

Looks like I up for another short tutorial :slight_smile:
@profechef thank you for advice and screenshots!


How to make multiple choice criteria

  1. Create a special sheet for your choice criteria. Make sure it has a “Row ID” column. Make a user-specific text column for checkbox value. (These actions can only be done from the Glide Data Interface, not from the Google Spreadsheet.)

    If you have multiple levels of criteria (e.g. categories and subcategories) make three columns - “Category” (text), “Parent” (text, listing the name of the “parent” category), and “Child” (relation “Category” to “Parent” on the same list, match multiple). This has been described in some other tutorial, I don’t remember where :man_facepalming:

  2. On your selection screen use the “Details” layout and add an “Inline list” component with your chosen criteria. Use the “Checklist” layout for this inline list. Then set your checkbox value column as “Check value” in the list settings.

    NB! Use “Checklist” in the “Inline list” settings, not in the general screen settings! This is a bit confusing :slight_smile:

    Again, if you have multiple levels of criteria, your top-level list should have a “view details” action (in the “Features” tab), and the lower levels should include the “Inline-list” component with a “Checklist” layout as well. On the bottom level change the list action to “none”.

  3. Now, go to the Data interface in Glide, to the sheet where your searchable data is. Create four columns.

  • A single-value column - I called it “Dummy True” because it should have “True” in every row.
  • A relation column that relates “Dummy True” to the checkbox value on your sheet with criteria.
  • A joined list column, which takes the data from the previous relation column and joins it in one cell.
  • And, finaly, an “if-then-else” column, with the following condition “if your joined list in the previous column includes the content of the “category” column (or whatever column that contains the criteria for the searchable data), then true”.

Now, just use the last “if-then-else” column as a visibility filter for your list to apply the search results.

4 Likes

I found a significant flaw in this approach: the selection (checked boxes) stay for the same user and can’t be cleared :-(((
Still looking for a solution for that, so far no one knows, what to do.

Cannot you clear it via a coumpound action?

Do you mean custom action? No, unfortunately, I can’t - “Set columns” only works on the first row, and I need to clear the whole column.
Described in more detail here.
If you have an idea of how to do it, that would be great!

Here’s my take on “clearing” a whole column.

2 Likes

Definitely, do you agree (or not), that if there is one component that is missing in Glide, it is the multi-select?
We should organise a sit-in !

1 Like

Unfortunately, not the only - check out the “Feature request” category :slight_smile:

As far as I remember, the whole story starts with the fact, that the form interface doesn’t have a clear and bright “Submit” button. So there was a workaround to create a form from the regular “details” screen, then another workaround for multiple criteria by @Robert_Petitto, then one more for multiple-choice… and then we hit the wall with the need to clear values before the next search (which is of course done automatically in the “form” interface :man_facepalming: )

By the way, there is a solution to that, too, but it’s ugly and unscalable. I cut down the number of categories to the absolute minimum (8) and made on my “Home” sheet two columns for each category - one for the value, the other - a relation to the “Categories” sheet. After that, I was able to make 8 “Set columns” actions - one for each category.

1 Like

Do you know if there’s a way to create a relation and a join list using the column header instead of the true/false of each checkbox component?

@ThinhDinh I didn’t see your comment up there. Can you create a relation column for multiple check boxes with the headers as tags instead of true/false?

Column headers won’t work. You would have to structure the data vertically (in rows) instead of horizontally and make the “checked” a user-specific column.

Hm. Ok. That makes sense but I’m still a little lost. So I would have one column be “options” listed vertically like in a choice list and a second column be a user specific y/n column? How would I tie the checkbox column to apply to each item in the first column on an edit screen? I want users to be able to select multiple options on an edit screen in a way that I can relate them so I can add a list join on the detail display screen. I hope that makes sense. I’ve been trying to apply all these multi-choice topics and I just can’t figure out a way to do it properly.

Can you elaborate more on this part?

My only experience with organizing information vertically is for choice components so I’m confused as to how I would attach a check box column to be directly associated with the vertical column of options I’m creating. Does that make sense? I feel like I must be missing something.

On the edit screen, I want to have a list of options to check off that are specific to each user and then be able to create a relation to that user so I can create a list join and display that component on the profile screen so I don’t have to show the whole mess of check boxes.