如何对数据源是关系的 table 进行排序

How to sort a table for which its datasource is a relation

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

页数
数据源 = 指标
Table
数据源 = 指标 [一个]:元数据文本 [许多](关系)

Table 需要根据另一个名为 [=] 的 Model 的字段进行排序21=]MetadataField,与MetadataText是一对多关系。

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

我正在使用 Google 驱动器表。

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

但是,您似乎想按相关记录对相关记录进行排序。在这种情况下,App Maker 不会成为您的朋友……但 javascript 会!由于 App Maker 加载 all 相关记录,您可以安全地 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)) 的方式工作。如果您想让用户通过单击 table 的 header 来对相关记录进行排序,您需要自己实现该逻辑。所以......所有这些麻烦导致我们找到替代解决方案!如果我们解耦相关记录并为它们引入单独的数据源会怎样?有了它,您几乎可以毫不费力地使用 App Maker 的 tables (sorting/paging) 的全部功能。您可以在 Project Tracker 模板 ViewProject 页面中查看实施示例。