【问题标题】:How to sort a table for which its datasource is a relation如何对其数据源是关系的表进行排序
【发布时间】:2018-04-25 02:58:39
【问题描述】:

我有一个带有表的页面,它的数据源是一个关系,需要根据来自另一个模型的字段进行排序:

页面
数据源 = 指标
表格
Datasource = Indicators [one] : MetadataText [many] (relation)

Table 需要根据另一个名为 MetadataFieldModel 字段进行排序,该字段具有与 MetadataText 的一对多关系。

我已对 MetadataField 的数据源进行了排序。但是表格中的内容是随机出现的。当我第一次访问应用程序时,Table 按记录的加载顺序排序。查看一些记录后,记录的排序发生变化并不断变化。

我正在使用 Google Drive 表格。

【问题讨论】:

标签: google-app-maker


【解决方案1】:

您可以通过属于相关记录本身的字段之一轻松对相关记录进行排序,但仅一次(您将收到从服务器排序的这些记录)。

但您似乎想按相关记录对相关记录进行排序。在这种情况下,App Maker 不会是你的朋友……但 javascript 会!由于应用制作工具会加载所有相关记录,您可以安全地sort them on client using javascript

indicatorsDatasource.load(function() {
  indicatorsDatasource.items.forEach(function(indicator) {
    indicator.MetadataTexts.sort(function(a, b) {
       return /* here goes your sorting logic */;
    });
  });
});

如果页面上有 n 个指标并且每个指标都有 m 个关联的元数据文本,它将在 O(n * m * log(m)) 中工作。如果您想让用户通过单击表的标题来对相关记录进行排序,您需要自己实现该逻辑。所以......所有这些麻烦都会让我们找到替代解决方案!如果我们将相关记录解耦并为它们引入分离的数据源怎么办?有了它,您几乎可以毫不费力地使用 App Maker 的表格(排序/分页)的全部功能。您可以在Project Tracker模板ViewProject页面查看实现示例。

【讨论】:

  • 有效!!感谢 Pavel 和 Morfinismo。你说得对 Pavel,我需要按相关记录对相关记录进行排序,即使我看到了 Morfinismo 指出的帖子,我也无法找出解决方案
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-01-07
  • 2013-03-02
  • 1970-01-01
相关资源
最近更新 更多