0

所以我设置了一个模型/表格,用户将用作项目任务列表。我希望这样当他们将项目的状态(模型中的一个字段)更改为已完成或已取消时,它会被隐藏。

这样他们只处理活动条目。但我也希望他们能够在需要时查看这些隐藏(存档)的项目。

我将以下代码添加到表的 onAttach 选项中

var datasource = app.datasources.Projects;
 datasource.query.filters.Status._notContains = 'Completed';
 datasource.load();

然后我有一个带有以下代码的按钮,以便他们可以看到隐藏/存档的项目:

widget.datasource.query.clearFilters();
widget.datasource.load();
app.closeDialog();
var datasource = app.datasources.Projects;
 datasource.query.filters.Status._contains = 'Completed';
 datasource.load();

它有效,但我觉得可能有更好/更优雅的方式来实现这一点。特别是因为看起来应用程序必须先加载数据,然后过滤它(这会导致加载速度变慢)。(我想我可能也有一些冗余代码)

此外,我觉得我的语法遗漏了一些东西,因为我无法让它过滤掉 Completed AND Cancelled。

谢谢您的帮助!

4

2 回答 2

1

如果表中有单页项目并且项目不多,则可以在客户端进行过滤。例如,您可以使用绑定表达式根据某些逻辑向行添加“projectHidden”样式,然后使用 CSS 更改行的可见性。

对于您的第二个代码块,没有理由清除过滤器、加载、设置过滤器然后再次加载。只需清除过滤器,设置新过滤器,然后调用加载。此外,如果您手动控制查询负载,那么您可能希望取消选中数据源中的设置以自动加载数据。

于 2017-02-22T01:44:41.163 回答
0
var datasource = app.datasources.Projects;
 datasource.query.filters.Status._notEquals = 'Completed';
 datasource.query.filters.Status._notEquals = 'Cancelled';
 datasource.load();
于 2017-02-25T13:51:45.367 回答