使用弹出窗口选择正确的关系字段并将值传递回输入表单

时间:2019-04-10 14:18:36

标签: google-app-maker

我正在将Google app maker与SQLcloud一起使用来构建资产跟踪数据库。 我有几个关系表: 资产清单(带位置的一对多) 地点(多对一,带地区) 地区(多对多地区)

问题在于,当在数据输入表单中填充新的相关位置字段时,几个区可能具有相同名称的位置。使用标准下拉菜单时,将显示相同的值,并且用户无法知道该位置与哪个区域相关联。 示例:在资产输入表单上的下拉位置显示:

商店 船员1 船员2 店 船员1 外部供应商

我有2页

资产-数据源:资产表 条目表数据源:继承(资产)以输入新资产 -Table View数据源:Inherited(资产)以查看输入的资产(无需编辑)

位置弹出 这似乎可以按预期工作,基本上可以通过以下形式进行导航以更正“位置”并将其存储在文本框和带有On_Click属性的按钮中,以将文本框值发送到资产的数据输入表单(不起作用),我可以将值传递给小部件,但无法确定如何将其保存到实际数据源。 目前正在使用此表单上文本框中的位置信息吗?

我创建了一个弹出表单,该表单允许用户通过按区域过滤来导航至正确的位置记录ID。我无法理解如何将其实际写回到资产输入表单上的正确位置字段。我是Java Script / Apps Script的新手,所以所有属性的含义以及如何使用它们都会给我带来麻烦。

我尝试在输入表单中设置一个名为“ SetLocation”的文本框,并将value属性设置为

@datasource.item.Location.Location

然后在弹出窗口中将按钮on_click设置为

app.pages.Assets.descendants.SetLocation.value = 
widget.parent.descendants.PassLocation.value;

“传递位置”是弹出窗口中存储正确位置的文本框的名称。

1 个答案:

答案 0 :(得分:1)

需要考虑的一些建议。在弹出窗口中设置一个动态属性,将其称为“ CreateDatasource”或任何适合您的需求。

在资产页面表单中,您可以导航到弹出窗口(假设这是一个从表单中打开弹出窗口的按钮),请输入以下代码:

var popup = app.popups.YourPopup;
popup.properties.CreateDatasource = widget.datasource;
popup.visible = true;

可以说,您的弹出内容数据源设置为“位置”,并且弹出窗口具有一些用于过滤位置的输入,然后有一个表显示过滤的结果。在此表中,您将选择适当的位置行,然后在弹出窗口中使用一个按钮将位置传递回资产表单,其代码如下:

widget.root.properties.CreateDatasource.item.Location = widget.datasource.item; //this would set the relation only assuming your asset relation end to locations is named 'Location'
widget.root.visible = false;

这将在您的关系中一切设置正确的情况下起作用。