Google App Maker表无法选择行

时间:2018-08-27 18:43:49

标签: google-app-maker

我制作了一个带有两个表的应用程序,分别用于数据源A和B。

B是与A的关系(通过公共ID字段)。

所以我想显示表A,在表B下。

理想情况下,只需单击A中的一行即可

a)选择该行,然后 b)更新表B以显示数据源B中的相关项目。

appmaker无法自动完成此操作,但是我可以像这样在表A上添加onload的代码:

app.datasources.A.query.filters.B.Id._equals = widget.datasource.item.Id;
app.datasources.B.load();

以及在tableARow本身的onClick事件上,我还添加了:

app.datasources.A.selectIndex(widget.parent.childIndex);
app.datasources.B.query.filters.B.Id._equals = widget.datasource.item.Id;
app.datasources.CurrentValuation.load();

除了TableA不会实际选择我在UI中单击的行(所选行始终是第二行)这一事实外,大多数方法都有效。数据源为tableB选择了正确的项目,但UI显示了TableA中选择的错误行。

我怀疑我要么需要调用另一种方法,要么可能有一种更好的方法,而我是一个笨蛋。无论哪种方式,谢谢您的回答!

1 个答案:

答案 0 :(得分:0)

理想情况下,TableA数据源应为“ A”,而表B应为“ A:B(关系)”。您还希望在A数据源中预取B。如果在表数据源上设置关系,则将无法对该表进行标题排序或分页。

或者,如果要基于TableA项过滤TableB,则可以在A数据源onItemChange事件中设置过滤器,如下所示:

var item = datasource.item;

if (item !== null) {
  var ds = app.datasources.B;
  ds.query.filters.A._equals = item;
  ds.load();
}

如果要坚持使用现有内容,请从TableA中删除onLoad代码,并将表行onClick事件的代码更改为:

app.datasources.B.query.filters.A._equals = widget.datasource.item;
app.datasources.B.load();

这应该可以解决您当前的问题,您也可以随时探索其他选择。