Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.
Comment: Updated Filtered choices link

For users already familiar with CommCare's conditional select functionality, referencing locations within a form is very similar.  To access the list of locations from within a CommCare Supply form, you can use the syntax described HERE.

Much like lookup tables in order to reference location data in a form, you must first include a reference to this instance in the forms xml.  To access this xml, enter your form, and in the top righthand corner, under "Tools", select "Edit Source XML"

...

  1. Add a Single/Multiple Answer Lookup Table:
  2. Click on the "Lookup Table Data" question
    Image Removed
    Image Added
  3. Edit the following fields:
    Image Added
    1. Lookup Table: ignore that for now
    2. Value Field: what you want to save as an answer (usually an id or a code). For locations you can use site_code or @id.
    3. Label Field: what you want to display to the user. For locations you can use name
    4. (Optional) Filter: can be used to filter the locations displayed.
      Image Removed
    The tricky part is now to modify the xml to point the question to the location table. To do so:
    1. Click on Tools / Edit Source XML on the top right corner of the form builder:
      Image Removed
    2. In the XML search for a select1 node holding your lookup question. It should look like this:
      Image Removed
      In this example my lookup question is /data/location_loookupThen in the expression <itemset nodeset="instance('products')/products/product">, replace the instance with the instance of your location. For exampleclick on the 3 dots next to the field Image Addedand complete the following fields.(star)
      Image Added
      1. Query expression: put here your location instance. For example:
        1. if you want to display the list of states: instance('locations')/states/state
        2. if you want to display the list of districts of a previously selected state: instance('locations')/states/state[site_code=/data/state_selected]/districts/district
          where /data/state_selected is the state previously selected.
      2. Instance ID: locations
      3. Instance URIjr://fixture/commtrack:locations

    3. Value Field: what you want to save as an answer (usually an id or a code). For locations you can use site_code or @id.

...

    1. Label Field: what you want to display to the user. For locations you can use name
    2. (Optional) Filter: can be used to filter the locations displayed.

(star) If you don't see the 3 dots (Image Added), you need to activate a feature flag in your project settings.

Add the feature preview "Custom Single and Multiple Answer Questions"  to your project