根据回答 ODK 中的当前提示显示下一个提示
show next prompt based on answering the current prompt in ODK
我是 ODK 的新手,我正在尝试在 ODK 中创建 XForm,以下是我遇到的问题。
问题:
用户从第一个提示中选择 Gravel、Drainage 或 Unimproved。下一个提示是关于在上一个提示中选择的项目的评级。现在,如果选择了 Gravel,我需要将速率设置为 1 到 5,如果在前面的提示中选择了任何其他选项,则需要将速率设置为 1 到 4。
我做了什么:
我设置了两个提示(Paser_Rates 和 Paser_Rates2),每个都有自己的绑定,根据所选提示显示正确的提示。
<bind nodeset="/widgets/main_repeat/PaserRates" relevant="not(selected(../RoadType, 'gravel'))" type="select1" required="true()" saveIncomplete="true()" />
<bind nodeset="/widgets/main_repeat/PaserRates2" relevant="selected(../RoadType, 'gravel')" type="select1" required="true()" saveIncomplete="true()" />
这不能解决我的问题,因为我不应该有两个提示,我需要将评级值保存在一列中 (Paser_Rates)。
请让我知道您对此有什么解决方案。
XForm 术语:
执行此操作的方法是将项集与包含您的选择列表的辅助实例一起使用。使用 XPath 谓词而不是相关项来确定要显示的选项。
XLSForm 术语
如果您使用 XLSForm 创建 XForm,这个(以及任何其他表单)将会容易得多。您需要创建一个 cascading select 并使用选择过滤器而不是相关过滤器来确定要显示的选项。
我是 ODK 的新手,我正在尝试在 ODK 中创建 XForm,以下是我遇到的问题。
问题:
用户从第一个提示中选择 Gravel、Drainage 或 Unimproved。下一个提示是关于在上一个提示中选择的项目的评级。现在,如果选择了 Gravel,我需要将速率设置为 1 到 5,如果在前面的提示中选择了任何其他选项,则需要将速率设置为 1 到 4。
我做了什么:
我设置了两个提示(Paser_Rates 和 Paser_Rates2),每个都有自己的绑定,根据所选提示显示正确的提示。
<bind nodeset="/widgets/main_repeat/PaserRates" relevant="not(selected(../RoadType, 'gravel'))" type="select1" required="true()" saveIncomplete="true()" />
<bind nodeset="/widgets/main_repeat/PaserRates2" relevant="selected(../RoadType, 'gravel')" type="select1" required="true()" saveIncomplete="true()" />
这不能解决我的问题,因为我不应该有两个提示,我需要将评级值保存在一列中 (Paser_Rates)。
请让我知道您对此有什么解决方案。
XForm 术语: 执行此操作的方法是将项集与包含您的选择列表的辅助实例一起使用。使用 XPath 谓词而不是相关项来确定要显示的选项。
XLSForm 术语 如果您使用 XLSForm 创建 XForm,这个(以及任何其他表单)将会容易得多。您需要创建一个 cascading select 并使用选择过滤器而不是相关过滤器来确定要显示的选项。