首页 文章

Google App Maker表无法选择行

提问于
浏览
0

我用数据源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

    理想情况下,TableA数据源应为“A”,表B应为“A:B(关系)” . 您还需要在A数据源中预取B.如果您在表数据源上设置关系,那么您将无法在该表上进行 Headers 排序或分页 .

    或者,如果您想基于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();
    

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

相关问题