如何在不清除所有过滤器的情况下清除特定过滤器?

时间:2017-03-29 15:32:06

标签: google-apps-script google-app-maker

背景:

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

问题:

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

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

3 个答案:

答案 0 :(得分:2)

来自有关数据源的参考:

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

  

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

所以,比如:

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

应该适合你。

答案 1 :(得分:0)

我确信有更好的方法可以做到这一点,所以你可能想等一个更智能的人进入,但我相信你可以让你的按钮清除过滤器,但重新申请一个新的过滤器。

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

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

因此,对于我的OnClick操作,对于我的“Clear Button”,我有:

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();

可能多余/不必要。

答案 2 :(得分:0)

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