可以基于前一问题的答案使用级联选择来限制可用答案的列表,其内容可以存储在 XLSForm 文件本身或外部文件中。
级联选择
可以基于前一问题的答案使用级联选择来限制可用答案的列表。 由此使得调查更加易于使用,通过仅向用户显示相关选项来使选项列表保持在很小的数量范围内。
对于等级中的各个选项列表,完成以下操作:
- 在选择选项卡上,为选择列表输入值。
- 针对级联选择条件(例如,国家、州、城市、郊区)添加一个或多个列。
- 在其他列中,针对各个选择输入相关值。
不建议在选项列表中包含重复的选项名称。 有关详细信息,请参阅多项选择问题。
完成选择列表后,您必须在调查选项卡上创建 choice_filter 列。 此列保存用于限制新选项列表的表达式。 choice_filter 列可以接受其他字段的内容(例如 state=${state_1})或表达式(例如 selected(${states_visited},state_code))。
要查看级联选择的实际效果,请参阅 Survey123 Connect 中的选项过滤器和级联选择示例。
您可以将级联选择用于 select_one、select_multiple 和 rank 问题。 Survey123 web 应用程序中的 rank 问题不支持级联选择。
提示:
查看调查(包含使用级联选择的问题)的结果时,仅显示已提交选项的名称。 与没有选项过滤器的 select_one 或 select_multiple 问题不同,这些问题将显示选项的标注。
在另一个问题中使用 jr:choice-name() 函数返回并存储与问题中的选项关联的标签。 从概念上讲,这可以通过 jr:choice-name(string value, 'question name') 表示。
在 jr:choice-name(${city_choice}, '${city_choice}') 中,第一个参数表示所选值,第二个参数表示问题的名称。 您必须在引号内定义问题的名称。
对于 select_multiple 问题,您必须使用 selected-at() 函数提取单个答案的标注。 例如:
jr:choice-name(selected-at(${city_choice}, 1), '${city_choice}')
可以在任何字符串问题中使用 jr:choice-name() 函数。 使用隐藏问题时,请同时定义其 bind::esri:fieldType 和 bind::esri:fieldAlias。
警告:
从 Survey123 版本 3.12 版本开始,将通过内部数据库管理选项列表。 这意味着您无法在级联和外部选择中使用 SQLite 保留关键字作为列名称。
外部选择
与级联选择相关联的选择列表会变得非常大,并且会影响表单的性能。 可通过 Survey123 将这些列表保存在外部文件中,并可根据需要将其加载到调查中。
要使用此选项,请在电子表格上为您的名为 external_choices 的调查创建一个选项卡。 该新选项卡必须与选项选项卡包含相同的列标题。 发布调查后,external_choices 选项卡中的值会保存在调查项目媒体文件夹中名为 itemsets.csv 的文件中,而非作为表单项目的一部分进行保存。 要引用 external_choices 选项卡上的选项列表,请使用 select_one_external 作为列表名称的前缀。
外部选择与外部选项列表不同,后者不需要 external_choices 工作表。
注:
外部选择仅适用于 select_one 问题。 不支持 select_multiple 问题。
外部选择仅用于处理与级联选择相关联的选择列表。 只有应用了选项过滤器的选项会添加到 itemsets.csv 文件中。