【问题标题】:Fill a text field with a preset value based on the selected value of a list in XLS Forms根据 XLS 表单中列表的选定值,使用预设值填充文本字段
【发布时间】:2020-05-17 18:02:33
【问题描述】:

我正在为 ODK 构建一个 xlsx 表单。我有一个下拉列表和一个文本输入字段。当我从 ListA 中选择一个值时,我想在文本输入字段中填写一个特定的代码。

例如,如果我从下拉列表中选择“valueA”,则值“codeA”将出现在文本输入中。 目前,我有一个 Excel 表,其中包含 ListA 中的值与相应代码(大约 300)之间的所有匹配项。 ListA 中的所有值都是唯一的。

我正在尝试使用 Xls 的“计算”字段进行一些测试,但到目前为止还没有成功。 有没有人用 Xls 做过类似的事情?有可能吗?

【问题讨论】:

  • 文本输入和下拉列表是否同时显示? (在同一屏幕上)

标签: xlsx odk xlsform


【解决方案1】:

您可以在下拉列表和文本输入之间包含一个calculate 字段,您可以在其中从csv 文件中提取值,其中valueAcodeA 之间的对应关系使用ValueA 中选择的值作为关键。您可以找到pulldata(...) 计算工作原理的说明here

这里有一个简短的例子。在调查标签中:

|type           |name   |label                  |calculation|

|select_one keys|value_a|Value A                |           |
|calculate      |code_a |                       |pulldata('data', 'value_column', 'key_column', ${value_a}|
|note           |note   |Code A value: ${code_a}|           |

在选择选项卡中:

|list_name|name    |label   |

|keys     |valueA_1|valueA_1|
|keys     |valueA_2|valueA_2|
(.......)

文件data.csv 应该是这样的:

|value_column|key_column|

|valueA_1    |codeA_1   |
|valueA_2    |codeA_2   |
(.......)

最后,我建议考虑在 value_a 中应用 cascade selection 布局,因为从 300 个值中选择一个可能具有挑战性。另一种选择是按字母顺序或不同顺序对这些选项进行排序,这样当有人填写您的表单时,她就会知道如何轻松找到合适的选项。

希望这会有所帮助!

【讨论】:

    猜你喜欢
    • 2020-03-14
    • 1970-01-01
    • 1970-01-01
    • 2013-02-16
    • 1970-01-01
    • 2020-09-23
    • 1970-01-01
    • 1970-01-01
    • 2020-03-17
    相关资源
    最近更新 更多