google appmaker 过滤器下拉菜单

google appmaker filter dropdown

我刚开始使用 Google AppMaker,但在理解查询构建器的工作原理时遇到了一些问题。

这是我的场景:

我有三个数据源:

  1. 客户:
    • 姓名
  2. 项目
    • 姓名
    • 客户
  3. 里程碑
    • 姓名
    • 客户
    • 项目

现在,我已经建立了这些模型之间的关系,以便: 一个项目有一个客户(但一个客户可以有多个项目) 一个里程碑有一个项目和一个客户

现在,在创建里程碑时,我希望用户首先 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 中第一个客户的项目,我不知道为什么...

我愿意使用其他控件和/或脚本来实现这一点,但感觉解决方案应该更简单。

如有任何帮助,我们将不胜感激。

根据您的问题描述,我是这样做的:

首先,我将模型设置如下:

  1. 客户:

    • 姓名
  2. 项目:

    • 姓名
  3. 里程碑:

    • 姓名


其次,我建立如下关系:

  1. 客户

    • (客户)一对多(里程碑)

    • (客户)一对多(项目)

  2. 里程碑

    • (里程碑)多对一(客户)

    • (里程碑)多对一(项目)

  3. 项目

    • (项目)多对一(客户)

    • (项目)一对多(里程碑)


第三,我创建了一个页面 "milestonePage",其中设置了 Milestone 数据模型。在该页面中,我插入了一个 table 和一个 insert 表单。该页面如下所示:

从这里开始,唯一要做的就是确保 Customer 下拉列表和 Project 下拉列表的绑定是正确的。默认情况下,Customer 下拉列表应具有以下绑定:

  • 选项:@datasources.customer.items

  • 值:@datasource.item.customer

最后,棘手的是 Project 下拉菜单。既然你要显示属于所选客户的项目,那么你必须这样做:

  1. 删除 OptionsValue
  2. 的绑定
  3. 确保新绑定如下:

    • 选项:@widget.parent.descendants.Field2.value.project(其中 Field2Customer dropdwon

    • 值:@datasource.item.project

奖励: 为避免混淆,将其添加到 customeronValueChange 处理程序中] 落下 widget.parent.descendants.Field3.value = null;(其中 Field3Project 下拉列表。)

P.S. 注意 Markus Malessa 提到的有关设置预取的内容,因为这是必要的。