Documentation

Multi Select Grid Question

Article

Multi Select Grid Question

When and Why to Use

Use this to let users select multiple items from each row of a grid. Best for:

  • Capturing multiple associations across brands or features

  • Structured multi-select input

  • Attribute-based tagging questions

Supports recoding, exclusive options, and visual media rows.

Chat Style
  • Rows displayed one at a time vertically, each with a set of checkboxes or buttons

  • Input is grouped per row with selectable option tiles

  • Specify inputs appear inline below their respective rows

Traditional Style
  • Grid layout with rows and columns visible at once

  • Checkbox-style inputs allow multiple selections per row

  • Optimized for keyboard and remote navigation

Chat styleTraditional with ImagesTraditional - Mobile optimized
481538625 956eddf1 7639 4a70 bffd 25af0f9f9158485771040 7058d24b df8c 4372 94df 34679e62df26485770617 b4357401 7276 4000 85d5 a98fbcb77152
Configuration Options
OptionTypeRequiredDefaultDescription
questionstringyes-The prompt shown to the user
rows`List[strMediaItem]`yes-
row_namestringyes-Label used in reporting and data schema
options`List[strMediaItem]`yes-
stylestringnocheckbox“checkbox” or “button” style inputs
randomizeboolnoFalseRandomize row order
randomize_optionsboolnoFalseRandomize option order per row
fixed_optionsList[str]no-Options not affected by randomization
exclusive_optionsList[str]no-Options that deselect others in same row
specify_optionstrno-Adds an “Other” input to each row
specify_textstrno“Please specify”Prompt shown when specifying input
imageMediaItemno-Top-level image shown above the question
recodesDict[str, str]no-Map of option values to alternate codes
defaultDict[str, List[str]]norandomDefault selections for test data
skip_emptyboolnoFalseSkip question if no rows provided
image_label_fieldstrno-Field to label image-based rows
show_image_labelboolnoTrueShow/hide image captions in rows
image_sizeTuple[int, int]no-Size for rendering images
custom_validator`Callable[[Dict[str, List[str]]], strNone]`no-
tagss.tag()no-Used in text substitution and reporting groupings
Example Code
s.grid_multi_select_question( "What do you associate with these brands? Select all that apply", row_name="Brand", rows=["Coke", "Pepsi", "Dasani", "Fanta"], options=["Tasty", "Refreshing", "Cool", "Value", "Convenient"] )

With recodes:

s.grid_multi_select_question( "What do you associate with these brands?", row_name="Brand", rows=["Coke", "Pepsi", "Fanta"], options=["Tasty", "Cool", "Value"], recodes={ "Tasty": "Product", "Cool": "Brand", "Value": "Pricing" } )

With exclusive and specify:

s.grid_multi_select_question( "Select all that apply to each option below", row_name="Item", rows=["Feature A", "Feature B"], options=["Useful", "Overused", "Unknown"], exclusive_options=["Unknown"], specify_option="Other" )
Notes
  • exclusive_options allow per-row mutual exclusivity

  • recodes simplify grouping similar concepts in analysis

  • custom_validator lets you apply rules across the full grid

  • Use randomize_options to avoid order bias