google appmaker 过滤器下拉菜单
google appmaker filter dropdown
我刚开始使用 Google AppMaker,但在理解查询构建器的工作原理时遇到了一些问题。
这是我的场景:
我有三个数据源:
- 客户:
- 姓名
- 项目
- 姓名
- 客户
- 里程碑
- 姓名
- 客户
- 项目
现在,我已经建立了这些模型之间的关系,以便:
一个项目有一个客户(但一个客户可以有多个项目)
一个里程碑有一个项目和一个客户
现在,在创建里程碑时,我希望用户首先 select 一个客户,然后当他们 select 一个项目时,我希望该项目的下拉列表仅显示属于的项目客户。
我目前的做法如下:
我创建了一个名为 "MilestonePage" 的页面,其中设置了 Milestone 数据模型。该页面包含一个 table(非 editable)和一个(创建)表单。该表单有两个下拉列表(客户、项目)和一个文本字段(名称)。
我的想法是项目下拉列表需要修改其选项,以便可用项目列表由 selected 客户过滤。
我查看了文档,但老实说我找不到关于如何使用编辑器的正确解释。我还查看了 Projects Tracker 和 Project List 示例,但都没有我需要的配置。
我最好的猜测是将选项设置为:
@datasources.Project.query.filters.Customer._equals
或者以某种方式利用这种关系,例如:
@datasources.Project.relations.Customer.item.Project
不用说,其中 none 有效。最后一个总是给我分配给 table 中第一个客户的项目,我不知道为什么...
我愿意使用其他控件和/或脚本来实现这一点,但感觉解决方案应该更简单。
如有任何帮助,我们将不胜感激。
根据您的问题描述,我是这样做的:
首先,我将模型设置如下:
客户:
- 姓名
项目:
- 姓名
里程碑:
- 姓名
其次,我建立如下关系:
客户
(客户)一对多(里程碑)
(客户)一对多(项目)
里程碑
(里程碑)多对一(客户)
(里程碑)多对一(项目)
项目
(项目)多对一(客户)
(项目)一对多(里程碑)
第三,我创建了一个页面 "milestonePage",其中设置了 Milestone 数据模型。在该页面中,我插入了一个 table 和一个 insert 表单。该页面如下所示:
从这里开始,唯一要做的就是确保 Customer 下拉列表和 Project 下拉列表的绑定是正确的。默认情况下,Customer 下拉列表应具有以下绑定:
选项:@datasources.customer.items
值:@datasource.item.customer
最后,棘手的是 Project 下拉菜单。既然你要显示属于所选客户的项目,那么你必须这样做:
- 删除 Options 和 Value
的绑定
确保新绑定如下:
选项:@widget.parent.descendants.Field2.value.project
(其中 Field2 是 Customer dropdwon)
值:@datasource.item.project
奖励: 为避免混淆,将其添加到 customer 的 onValueChange 处理程序中] 落下
widget.parent.descendants.Field3.value = null;
(其中 Field3 是 Project 下拉列表。)
P.S. 注意 Markus Malessa 提到的有关设置预取的内容,因为这是必要的。
我刚开始使用 Google AppMaker,但在理解查询构建器的工作原理时遇到了一些问题。
这是我的场景:
我有三个数据源:
- 客户:
- 姓名
- 项目
- 姓名
- 客户
- 里程碑
- 姓名
- 客户
- 项目
现在,我已经建立了这些模型之间的关系,以便: 一个项目有一个客户(但一个客户可以有多个项目) 一个里程碑有一个项目和一个客户
现在,在创建里程碑时,我希望用户首先 select 一个客户,然后当他们 select 一个项目时,我希望该项目的下拉列表仅显示属于的项目客户。
我目前的做法如下: 我创建了一个名为 "MilestonePage" 的页面,其中设置了 Milestone 数据模型。该页面包含一个 table(非 editable)和一个(创建)表单。该表单有两个下拉列表(客户、项目)和一个文本字段(名称)。 我的想法是项目下拉列表需要修改其选项,以便可用项目列表由 selected 客户过滤。 我查看了文档,但老实说我找不到关于如何使用编辑器的正确解释。我还查看了 Projects Tracker 和 Project List 示例,但都没有我需要的配置。 我最好的猜测是将选项设置为:
@datasources.Project.query.filters.Customer._equals
或者以某种方式利用这种关系,例如:
@datasources.Project.relations.Customer.item.Project
不用说,其中 none 有效。最后一个总是给我分配给 table 中第一个客户的项目,我不知道为什么...
我愿意使用其他控件和/或脚本来实现这一点,但感觉解决方案应该更简单。
如有任何帮助,我们将不胜感激。
根据您的问题描述,我是这样做的:
首先,我将模型设置如下:
客户:
- 姓名
项目:
- 姓名
里程碑:
- 姓名
其次,我建立如下关系:
客户
(客户)一对多(里程碑)
(客户)一对多(项目)
里程碑
(里程碑)多对一(客户)
(里程碑)多对一(项目)
项目
(项目)多对一(客户)
(项目)一对多(里程碑)
第三,我创建了一个页面 "milestonePage",其中设置了 Milestone 数据模型。在该页面中,我插入了一个 table 和一个 insert 表单。该页面如下所示:
从这里开始,唯一要做的就是确保 Customer 下拉列表和 Project 下拉列表的绑定是正确的。默认情况下,Customer 下拉列表应具有以下绑定:
选项:
@datasources.customer.items
值:
@datasource.item.customer
最后,棘手的是 Project 下拉菜单。既然你要显示属于所选客户的项目,那么你必须这样做:
- 删除 Options 和 Value 的绑定
确保新绑定如下:
选项:
@widget.parent.descendants.Field2.value.project
(其中 Field2 是 Customer dropdwon)值:
@datasource.item.project
奖励: 为避免混淆,将其添加到 customer 的 onValueChange 处理程序中] 落下
widget.parent.descendants.Field3.value = null;
(其中 Field3 是 Project 下拉列表。)
P.S. 注意 Markus Malessa 提到的有关设置预取的内容,因为这是必要的。