gpt4 book ai didi

google-app-maker - 数据库字段值的下拉列表

转载 作者:行者123 更新时间:2023-12-01 16:58:09 24 4
gpt4 key购买 nike

我有一个与数据过滤相关的问题。我有一个 Google 云端硬盘表来存储数据,我想在下拉列表中显示该数据源的一个字段,以便按该字段(国家/地区)进行过滤。

Field

Dropdown filter

问题是这个下拉过滤器仅显示列表当前页面上显示的国家/地区。例如,如果第一页的下拉列表中出现一个国家/地区(泰国),我将只看到泰国。

example

如果我们移至列表的第二页,我们还有另外两个国家/地区(西类牙和葡萄牙),然后下拉列表将仅显示西类牙和葡萄牙。我真正想要的是一个显示所有国家/地区的下拉菜单,无论它们是否不在当前页面上,但我不知道如何修复它。 ​

​这是国家/地区选择器的配置:

example4

在帮助中,据说我们应该使用@datasource.model.fields.COUNTRY.possibleValues,但如果我使用此参数作为选项,选择器中不会显示任何内容。

Appmaker Help

我花了很多时间试图解决这个问题,但没有找到解决方案,我想与您确认这是一个问题还是我做错了什么......

你能帮我吗?

最佳答案

您的下拉列表和表格使用相同的数据源,并且通过#distinct()#sort(),您正在过滤已加载到浏览器的项目(与存储在数据库中的整个数据集相反) )。

您的下拉列表需要一个单独的数据源。至少有三种技术可以做到这一点:

可能的值

您可以预定义allowed values对于您的 Country 字段,并使用它们来填充创建表单和表过滤 @datasource.model.fields.Country.possibleValues 中的下拉选项,正如您在问题中提到的: Possible values

为国家创建模型

通过介绍专用related model对于国家/地区,您可以获得以下好处:

  • 标准化数据(您不会多次存储同一国家/地区)
  • 您将能够保持国家/地区列表的整洁(按照当前的方法,同一国家/地区可能会出现不同的拼写,例如“US”、“USA”、“United State”等)
  • 应用用户在创建新记录时将能够从下拉列表中选择所需的国家/地区(而不是每次为所有新记录都键入容易出错的国家/地区)。
  • 您的下拉菜单绑定(bind)将像这样简单:
// for names
@datasources.Countries.items..Names

// for options
@datasources.Countries.items.._key

// for value
@datasource.query.filters.Country._key._equals

创建计算模型

Calculated Model您将能够从表格中挤出独特的国家/地区值(value)观。您的服务器查询脚本可能类似于以下内容:

function getUniqueCountries_() {
var consumptions = app.models.Consumption.newQuery().run();
var countries = [];

consumptions.reduce(function (allCountries, consumption) {
if (!allCountries[consumption.Country]) {
var country = app.models.CountryCalc.newRecord();
country.Name = consumption.Country;
countries.push(country);
allCountries[consumption.Country] = true;
}
}, {});

return countries;
}

但是,随着消耗表的增长,它可能会给您带来显着的性能开销。在这种情况下,我宁愿看看 Cloud SQL 的方向和 Calculated SQL model .

注意:

我给出了一个相当广泛的答案,也涵盖了类似的情况,即字段选项的数量可以是无限的(与有限的国家/地区数量相反)。

关于google-app-maker - 数据库字段值的下拉列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48926866/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com