1

背景:

我正在创建一个应用程序,用于存储公司员工在表格中接受的培训记录。我想根据培训名称和/或员工姓名过滤表的行。我能够弄清楚第一部分,并且能够创建一个按钮来清除所有过滤器并使用 clearFilters() 函数重新加载整个表。

问题:

我想创建两个按钮来清除过滤器选择,一个(“所有培训”)用于培训名称,一个(“所有员工”)用于员工姓名。更清楚地说,当我单击“所有培训”按钮时,我想清除培训名称上的过滤器,而不是员工姓名上的过滤器。一旦我有一个包含多个要过滤的字段的表,并且我想导航表而不必每次都重置所有字段,这将变得很有用。

我尝试搜索 Google App Maker 上可用的功能,但似乎没有什么可以解决我的问题。有什么建议么?

4

3 回答 3

3

来自关于数据源的参考:

https://developers.google.com/appmaker/models/datasources#query_datasources

与字段过滤器一样,将 null 分配给关系过滤器属性会清除该限制。

所以,像:

datasource.query.filters.Employee._contains = null;
datasource.load();

应该为你工作。

于 2017-03-29T19:53:20.047 回答
1

我相信有更好的方法可以做到这一点,所以你可能想等待更聪明的人加入,但我相信你可以让你的按钮清除过滤器,但重新应用一个新的过滤器。

因此,对于我的情况,我让表格对列为“完成”的项目进行过滤,因此当用户打开页面时这些项目被隐藏。

然后,当用户过滤另一个字段并想要清除该搜索时,我不希望“完成”项目重新出现(这就是我刚刚使用 clearFilters() 函数时发生的情况。所以我的解决方法是清除按钮实际上清除过滤器,但应用原始的“完成”过滤器。

因此,对于我的 OnClick 操作,对于我的“清除按钮”,我有:

widget.datasource.query.clearFilters();
widget.datasource.load();
app.closeDialog();
var datasource = app.datasources.TestModel;
 datasource.query.filters.Status._notContains = 'Complete';
 datasource.load();

widget.datasource.load();
    app.closeDialog();

可能是多余的/不必要的。

于 2017-03-29T17:21:07.193 回答
0

您可以在 onClick 处理程序中简单地执行 3 个步骤吗?(1)清除所有过滤器(2)设置员工姓名过滤器(3)加载数据

于 2017-03-29T18:23:39.150 回答