Hello, I am experiencing an issue with the Choice component in my Glide project. While the selected values are correctly stored in the designated column, they are always saved in the first row of the table, regardless of the row selected.
Here is the current setup:
Row ID is enabled for all rows.
The target column is set as a User-Specific Column.
Filtering conditions are applied based on Row ID or question ID.
Even when attempting to use the Row ID column directly for filtering or targeting, the issue persists, and data continues to save only in the first row.
Despite following these steps, the data is always saved in the first row. This issue occurs consistently across multiple Choice components and table configurations.
Attached are screenshots and a project link for your reference. Please let me know if additional details are needed.
Where are you applying your filters? Are you applying the filter to a screen or to a component?
Based on your configuration, the choice component will write to the row that the screen is attached to. If the screen is always attached to the first row, then it will always write the selected choice to the first row. If you are filtering the screen to a specific row, or navigating to a specific row through a collection, then your choice will write to the appropriate row.
Even though Iâve applied filters to both the screen and the component, the choice component still writes to the first row. Could there be a setting or priority that overrides the screen filter, forcing it to default to the first row?
I suspect that your screen filtering isnât working as you expect it to. I canât say for sure because a) I canât read it, and b) I canât see what the underlying data looks like.
My first suggestion would be to add a RowID column to the table, then add a Text component to the screen and target it at the RowID column. Then check that value and see which row it appears in in the table. That will tell you for certain which row your screen is attached to (my bet would be the first row).
My second suggestion would be to move your filtering logic to the data editor. Use an if-then-else column that only returns true for the specific row that matches all conditions. Then set your screen filter to only include rows where that column âis checkedâ. There are at least 3 advantages to this approach:
it allows you see exactly which row/rows match your filter by simply inspecting the table in the data editor,
it simplifies the filter conditions on your screen (just a single condition instead of many)
if you need to apply the same filter conditions to multiple components, itâs much easier to manage - especially if you need to change it later on - change it in one place instead of many.
I created a new app using the same data sheet to test if the issue persists. Unfortunately, the Screen still writes to the first row.
I have tried applying filters (RowID filters, If-Then-Else filters) both at the screen level and the component level, but it doesnât change the behavior.
I ensured that the Choice component writes to the correct column and that the filters only show the intended rows.
Attached Screenshots:
The data sheet setup showing RowIDs and other columns.
The filters on my Choice component are intended to ensure that only specific rows are shown based on their Row IDs. However, even with these filters applied, the Choice component still writes data only to the first row of the table.
My expectation is that the Choice component should dynamically write to the active row determined by the filters or RowID. Is there something I might have missed in my configuration to achieve this behavior?
Oh, one thing I missed. Your first screenshot shows that your if-then-else column is returning true for every row. As the first row is the first one that matches the filter condition, then thats one the screen attaches to. This confirms my earlier suspicion that your filter isnât acting as you expect it to.
Thatâs a very cumbersome way to apply filtering to a Choice component. But lets put that aside for now as itâs unrelated to your main issue. Iâll come back to it later.
Yes, I think so. Lets take a step back and clarify your expectation. Are you expecting that the Choice component will write a value into every row that matches your screen filter?
If yes, thatâs not the way it works. A Choice component writes a value to a single row in a single column.
At this point it might help to understand the bigger picture of what you are trying to achieve. Most likely we can suggest a more appropriate approach.
No, I expect it to write a value to a single row in a single column as you described.
Iâm building a personality test app where each question corresponds to a specific row in my table (identified by Row IDs). My goal is to allow users to select an answer for each question, and for that selection to be dynamically written to the corresponding row based on its Row ID.
Currently, the Choice component only writes to the first row of the table, and Iâm struggling to make it write to the correct row dynamically.
Okay, thanks for the explanation - thatâs helpful.
My next question would be how does a user navigate to that screen?
If they are navigating via a Collection that shows a list of questions, then by default they will automatically land on the correct row and you wonât need any filtering at all.
But if they are getting there by some other means, then you may need to employ some other method to identify the correct row.
Currently, the user navigates through the flow where all questions are presented in sequence using the âShow New Screenâ action.
There is no list of questions or a Collection view being used for navigation.
Each âNew Screenâ in the flow contains 7 to 11 questions.
One thing Iâm noticing is that your screen filter is is set to filter on multiple rows. Looks like you changed from question ID to RowID, but itâs still the same thing. That screen filter is going to find the first row that matches your filter and attach to it. In this case it happens to be the first row every time because that first row always matches the first filter. None of your additional filters will matter because it will always find a match with the first row and attach to it.
You mention that you navigate by showing a ânew screenâ. One problem with that it you have to redesign the same screen multiple times for each question. That can end up being a maintenance nightmare, especially if you have a lot of questions and screens. The other problem is that you are probably navigating to that screen by linking to the table instead of linking through a relation or some other means to put you on the correct row. By navigating to the next screen through the table instead of a relation for example, itâs always going to put you in the first row in the table or the first row in that table that matches your filter.
I would restructure things a bit.
First get rid of any screen filters. If things are set up correctly, you donât need them.
Iâm not sure if you need to do anything different with your choice component for now, so weâll leave that alone.
In your table, create a number column and number each row sequentially from 1 to n.
Add a Single Value â Whole Row column to the same table. Something similar to my screenshot below where the single value column gets a whole row from the table. The number column you created above will determine how many rows it should count from the beginning of the table. The goal here is to get a single value row which is the row immediately following each row. We will use this to navigate to the next question, or next row in the table.
Once you have that, change your next question button to âShow Detail Screenâ instead of âShow New Screenâ and have it direct to the single value column. This will use the same screen but move you to the next row when the button is clicked.
Using âShow Detail Screenâ will eliminate the need for multiple screens caused by using â Show New Screenâ. Using the single value row will navigate you to the correct row. All questions will share the same detail screen, but the row itâs attached to will dynamically change.
You will be able to design the screen once and have it work for all questions. By specifically navigating to each following question through the single value row, it will place you in the correct row without needing to apply any screen filters.