我刚开始使用Google AppMaker,但在理解查询生成器的工作方式时遇到了一些麻烦。
这是我的情况:
我有三个数据源:
现在,我已经在这些模型之间建立了关系,以便: 一个项目有一个客户(但一个客户可以有多个项目) 一个里程碑有一个项目和一个客户
现在,在创建里程碑时,我希望用户首先选择一个客户,然后在他们选择一个项目时,我希望该项目的下拉列表仅显示属于该客户的项目。
我当前的方法如下: 我创建了一个名为“ MilestonePage”的页面,该页面设置了Milestone数据模型。该页面包含一个表格(不可编辑)和一个(创建)表格。该表单有两个下拉菜单(客户,项目)和一个文本字段(名称)。 我的想法是,Project的下拉菜单需要修改其选项,以便可用客户选择的项目可以过滤可用项目的列表。 我已经看过文档,但老实说,我找不到有关如何使用编辑器的正确解释。我还查看了“项目跟踪器”和“项目列表”示例,但是都没有我需要的配置。 我最好的猜测是将选项设置为:
@datasources.Project.query.filters.Customer._equals
或以某种方式通过以下方式利用这种关系:
@datasources.Project.relations.Customer.item.Project
不用说,这些都不起作用。最后一个总是给我分配给表中第一个客户的项目,我不知道为什么...
我愿意使用其他控件和/或脚本来实现这一目标,但是感觉解决方案应该更简单。
任何帮助将不胜感激。
答案 0 :(得分:0)
根据您的问题描述,这是我所做的:
首先,我将模型设置如下:
客户:
项目:
里程碑:
第二,建立如下关系:
客户
(客户)一对多(里程碑)
(客户)一对多(项目)
里程碑
(里程碑)许多对一个(客户)
(里程碑)许多到一个(项目)
项目
(项目)许多对一个(客户)
(项目)一对多(里程碑)
第三,我创建了一个页面“ milestonePage”,该页面设置了Milestone数据模型。在该页面内,我插入了表和插入表单。该页面如下所示:
从这里开始,唯一要做的就是确保客户下拉列表和 Project 下拉列表的绑定正确。默认情况下,客户下拉列表应具有以下绑定:
选项:@datasources.customer.items
值:@datasource.item.customer
最后,最棘手的是 Project 下拉菜单。由于要显示属于所选客户的项目,因此必须执行以下操作:
确保新的绑定如下:
选项:@widget.parent.descendants.Field2.value.project
(其中 Field2 是客户下拉菜单)
值:@datasource.item.project
奖金::为避免混淆,请将其添加到客户下拉菜单的 onValueChange 处理程序中
widget.parent.descendants.Field3.value = null;
(其中 Field3 是 Project 下拉菜单。)
建议。请注意Markus Malessa提到的有关设置预取的内容,因为这很有必要。