【发布时间】:2019-11-25 11:21:08
【问题描述】:
总结
在下拉列表或单选按钮 UI 中获取所选项目的记录 ID 似乎是一个常见问题,但尽管搜索了几个月,但我仍未找到 Google AppMaker 的答案。
示例用例:我希望编辑属于某个系列的产品:
产品 - (N:1) --> 系列
产品 - (M:N) --> FeatureValues
示例
该产品属于家庭信用卡。
信用卡系列具有以下特点:|联系人 |近场 |费率 |芯片与引脚|
在编辑表单中,如果我更改产品所属的系列,则功能列表将更改,并且需要输入新的功能值。 (动态形式)
层次结构表
系列、特征和允许值保存在一个层次结构表中:
家庭 | 特征 | 价值观
newValue._key 似乎只适用于文本框 UI 项。
下拉列表:
widget.datasource.item.Id 或 _key 提供父数据源的Product ID,ProductById(因为我正在编辑单个产品)
widget.datasource.selectKey(newValue._key);返回未定义
示例代码
下拉列表 OnValueChange 事件:
//根据选择的分类家族更新特征下拉列表 app.datasources.TaxonomyChildren.query.parameters.parent_fk = app.datasources.TaxonomyFamilies.item.Id;
app.datasources.TaxonomyChildren.load();
如果我可以在下拉列表中选择所选系列的记录 ID,我可以设置一个 query.filter.parameter 来显示新选择的系列的特征和值。
注意:如果您无法在 Google 应用程序制造商中创建“动态”表单,那么我将停止,因为这已经用尽了很多时间。
【问题讨论】:
-
你的下拉选项绑定是什么,是
@datasources.TaxonomyFamilies.items还是@datasources.TaxonomyFamilies.items..SomeField?还有一点需要指出,您的下拉事件应该在 onValueEdit 事件中,而不是在 onValueChange 事件中。另请记住,您的下拉数据源从您的表单继承数据源,因为您的选项数据源可能不同,因此下拉事件中的widget.datasource.item.Id不会指向所选选项的 id,但 `newValue.Id' 会。 -
您好,Markus,感谢您的帮助。对于 dropdown 选项 '@datasources.TaxonomyFamilies.items..Taxonomy 其中分类是一个字段 值:'@datasources.ProductById.item.TaxonomyFamily 更新族该产品属于。这是产品表中的 fk 到代表单系列的层次表我将事件更改为 onEdit 没有任何改进。是的,下拉选项数据源不同。当我尝试 'newValue.Id 并将其写入控制台 log() 时,它会在 onEdit 事件 上显示 undefined
-
PS 'TaxonomyFamilies' 是一个计算查询,它从层次结构表中提取具有 特征 作为其子项的组。所以我基本上是在尝试获取所选 option 的 ID。
-
那么您为 TaxonomyFamilies 计算的数据源是否有一个字段来存储您对层次结构表运行的查询中的 ID?我问是因为计算数据源本身没有内置 Id 字段,因为它只是记录的临时表示。
-
我明白了,查询很简单,是的,包括“家庭组”记录的 ID。分类法等于 family 组、特征或特征值的名称。见查询->
Select Distinct h.Id, h.Taxonomy, h.Type, h.Tag from Hierarchy as h inner join Hierarchy as h2 on h.Id = h2.Parent_fk where h.IsDeleted = false and h2.Type = 'Feature' and h2.IsDeleted = false Order by h.Tag;
标签: dropdown google-app-maker dynamic-forms